数据结构与算法[零基础]---4.树和二叉树
四、树和二叉树
(一)树
1.相关定义
- 树是由一个或多个结点组成的有限集T,它满足以下两个条件:第一个是有一个特定的结点,作为根结点;第二个其余的结点分成m(m>=0)个互不相交的有限集T0,T1,...,Tn-1。其中每个集合又都是一棵树,称T0,T0,T1,...,Tn-1为根结点的子树
- 树中各结点的度的最大值则称为树的度。树中结点的最大层次称为树的深度。
2.存储结构
(1)标准存储结构:
树的结点内容分为两部分,分别为结点的数据和指向子结点的指针数组。对于N度数,在标准存储结构中指针数组有N个元素。
(2)带逆存储结构:
当程序需从结点返回到其父结点时,在标准存储结构基础上增加一个指向父结点的指针,这种存储形式就是带逆存储结构
3.使用的链表结构
(1)双亲表示法:
利用每个结点只有一个双亲的特点;求结点的孩子时要遍历整个向量
(2)孩子表示法:
把每个结点的孩子都排成一个线性表,用链表储存起来,则n个结点有n个孩子链表,而n个头指针又组成了一个线性表
(3)孩子兄弟表示法:
孩子兄弟表示法(又称二叉树表示法,或二叉链表表示法):结点中的孩子指针域和兄弟指针域分别指向该结点的第一个孩子和下一个兄弟结点
4.树的遍历
在应用树结构时,常要求按某种次序获得树中全部结点的信息,这种方法的实现叫做树的遍历
(1)树的先序遍历:
首先访问根结点,然后从左到右遍历根结点的各子树(根-->左-->右)
(2)树的后序遍历:
首先从左到右按后序遍历根结点的各子树,然后访问根结点(左-->右-->根)
(3)树的层次遍历:
首先访问处于0层上的根结点,然后从左到右依次访问处于1层、2层上的结点,即自上而下从左到右逐层访问树各层上的结点(上-->下,每层从左-->右)
(二)二叉树
1.相关定义
二叉树是一种特殊的树形结构,其结点是第一每次结点至多只有二颗子树;二叉树的子树有左右之分,其次序不能任意颠倒
2.二叉树的性质
- (1)在二叉树的第i层至多2ⁱ⁻²个结点(i>=1)
- (2)深度为k的二叉树至多有2ᵏ-1个结点(k>=1)
- (3)对任何一颗二叉树,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1
- (4)具有n个结点的完全二叉树的深度为㏒2n+1
3.二叉树的遍历
(1)先序遍历:
访问根结点;访问根结点的左子树;访问根结点的右子树(根-->左-->右)
(2)中序遍历:
访问根结点的左子树;访问根结点;访问根结点的右子树(左-->根-->右)
(3)后序遍历:
访问根结点的左子树;访问根结点的右子树;访问根结点(左-->右-->根)
(三)真题实例
- 二叉树的中序遍历是左-->根-->右,所以是DBGF(左子树),根结点A,GICH(右子树),选B
- 二叉树的中序遍历是左-->根-->右,所以排除A和D选项,A根节点开始遍历肯定错,H在右子树所以也是错的;然后看一下C选项,A结点根结点在最后肯定是错的;所以选B
-
二叉树的后序遍历是左-->右-->根,我们只要看到根节点A在最后就是答案,选择C - 总结:二叉树也是一个重点!!!上面的例题是教资历年的真题,二叉树的遍历在计算机等级证书也是都会考的。所以,一定要背熟先序、中序、后序的遍历方式,具体怎么记,后序就是根结点最后遍历(先按顺序遍历左,右);先序就是根结点最先遍历(在按顺序遍历左,右);然后中序就是左,根,右。下一篇文章我会介绍图,也是一个常考点,如果你喜欢这篇文章有帮助到你,不要忘记你的点赞跟关注噢!!