树是一种数据结构,是由n (n>=1)个有限点组成一个具有层次关系的集合
而二叉树是每个结点最多有两个子树的树结构
下面是关于二叉树的一些简单操作
在之前写过的链表中,是用链表的头节点的指针来表示一个链表,那么在二叉树中,同样是使用根节点的指针来表示一个二叉树
4 typedef struct TreeNode
5 {
6 TreeNodeType data;
7 struct TreeNode* lchild;
8 struct TreeNode* rchild;
9 }TreeNode;
10
1.二叉树的初始化
8 void TreeInit(TreeNode** pRoot)
9 {
10 if(pRoot == NULL)
11 {
12 //非法输入
13 return ;
14 }
15 *pRoot = NULL;
16 return;
17 }
2.二叉树的先序、中序、后续、层序
(1)二叉树的先序
二叉树的先序的顺序为先遍历树的根节点,再遍历根节点的左子树,最后再遍历根节点的右子树
上面这张图的先序遍历结果为ABDEGCF
下面是使用递归的方法来遍历地得出二叉树的先序遍历,首先先访问根节点(即打印根节点),再分别遍历左右子树
34 //先序遍历树
35 void TreePreOrder(TreeNode* root)
36 {
37 if(root == NULL)
38 {
39 //空树
40 return ;
41 }
42 //先访问根节点
43 printf("%c",root->data);
44 //遍历左子树
45 TreePreOrder(root->lchild);
46 //遍历右子树
47 TreePreOrder(root->rchild);
48 return ;
49 }
(2)二叉树的中序