二叉树的创建、先根、中根、后根遍历
来源:互联网 发布:濮阳市公务员网络培训 编辑:程序博客网 时间:2024/05/19 17:57
树的定义:
树是n个结点的有限集。n=O 时称为空树。在任意-棵非空树中: (1 )有且仅有一·个特定的根结点: (2)若干子树(互不相交)
树的定义是递归定义的
二叉树( Binary Tree) 是 n个结点的有限集合,该集合或者为空集(称为空二叉树),戴者由一个根结点和两颗互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
二叉树结点的定义:
typedef char elemtype;typedef struct BtNode{elemtype data;BtNode *leftchild;BtNode *rightchild;}BtNode,*BinaryTree;下图二叉树的遍历:
先根遍历: ABCDEFGH
中根遍历:CBEDFAGH
后根遍历 : CEFDBHGA
二叉树的创建:
BtNode * creat_tree(){elemtype x;cin>>x;BtNode *p = NULL;if (x != '#'){p = Buynode();p->data = x;p->leftchild = creat_tree();p->rightchild = creat_tree();}return p;}字符'#'表示左孩子或右孩子为空。先创建根结点,在递归创建左子树和右子树
二叉树遍历:
//先序遍历二叉树void PreOrder(BtNode *ptree){if (ptree != NULL){cout<<ptree->data<<" ";PreOrder(ptree->leftchild);PreOrder(ptree->rightchild);}}//中序遍历二叉树void InOrder(BtNode *ptree){if (ptree != NULL){InOrder(ptree->leftchild);cout<<ptree->data<<" ";InOrder(ptree->rightchild);}}//后序遍历二叉树void PastOrder(BtNode *ptree){if (ptree != NULL){PastOrder(ptree->leftchild);PastOrder(ptree->rightchild);cout<<ptree->data<<" ";}}
测试代码:
void main(){BinaryTree tree1;tree1 = creat_tree();PreOrder(tree1);cout<<endl;InOrder(tree1);cout<<endl;PastOrder(tree1);}
测试结果如图:
0 0
- 二叉树的操作(二叉树的创建、先序遍历--->先根、中序遍历---->先左、后续遍历--->后根)
- 二叉树的创建、先根、中根、后根遍历
- 二叉树的先根遍历,中根遍历,后根遍历的非递归算法
- 先根遍历创建二叉树
- 二叉树的创建,先序遍历,中序遍历,后序遍历
- 中根遍历和先根遍历/后根遍历构建二叉树
- 二叉树的先跟遍历,中跟遍历,后根遍历
- 二叉树的递归创建,先序(中序、后序)递归遍历二叉树
- 二叉树的构造与遍历—先根构造,一维数组存储按层构造,先根,中根,后根遍历输出
- 二叉树的先根遍历
- 二叉树的创建及递归的先,中,后序遍历
- 二叉树的创建和先序,中序,后序,递归,非递归遍历
- 二叉树的创建、先序、中序以及后序遍历
- 二叉树的创建与先、中、后序遍历递归实现
- 数据结构---二叉树的创建、先序、中序、后序遍历
- 二叉树的创建与三种遍历(先序,中序,后序)
- 二叉树递归的创建及三种遍历(先序、中序、后序)
- 二叉树的创建、先序、中序、后序遍历
- 1003. 我要通过!(20)(java实现)
- 重磅 | 详解深度强化学习,搭建DQN详细指南(附论文)
- ES6 中 let的在for循环中变量作用域问题的探讨
- java从MySQL表中取出数据时报错:java.sql.SQLException: Before start of result set
- 深度 | 深度学习漫游指南:强化学习概览
- 二叉树的创建、先根、中根、后根遍历
- ServletContext
- 红黑树笔记
- java
- 【网易2017内推笔试】小易记单词
- Qt编程入门(2) : 窗口和布局(2)
- 关于DOM的理解
- 比较数据库的表,字段是否一致,找出差异的表、字段
- 并发编程——原子性,可见性和有序性