考研之数据结构012_非线性表的树
一、树的概念和术语
树是n(n>0)个结点的有限集合。
1.有且仅有一个根节点
2.“叶子结点”:没有后继结点(终端节点)
3.“分支结点”:有后继的结点
4.除了根节点,任何一个结点都有且仅有一个前驱
5.树是一个递归定义的数据
6.路径只能是从上往下,不能从下往上
空树:结点数为0的树
非空树:有且仅有一个跟节点
属性:
1.结点的层次(深度)——从上往下数
2.结点的高度——从下往上数
3.数的高度——总共有几层
4.结点的度——有几个孩子(分支)
例如:
D结点的度是3,因为有三个孩子。
而IJ结点的度是0,因为没有孩子
5.数的度——各节点的度最大值
6.A和B是堂兄弟,说明A 和B在同一层
有序数 和 无序数
树 和 森林
二、 树的常考性质
1.结点树=总度数+1
而结点的度=结点有几个孩子
2.度为M的树,M叉树的区别
例如:
度为3的树:那么一个树里边,至少有个一结点度数为3
三叉树:规定了每个节点最多有三个孩子
3.度为M的树,第i层至多有 m的i-1次 个结点(i>=1)
三、二叉树的基本术语
1、二叉树的基本概念
1.二叉树是n(n>=0)个结点的有限集合
2.或者是空二叉树
3.或者由一个根节点和两个互不相交的被称为根的左子树和右子树组成。
4.特点:每个结点至多只有两棵子树。左右子树不能颠倒。
5.度为2的有序数有什么区别:
1.度为2的是:在一个树里,至少有一个结点有两个子树,不可以没有
2.二叉树是: 在一个树里,最多每个节点有两个子树,可以没有结点。
2、特殊的二叉树(考试常考)
1、满二叉树
1.满二叉树:除了叶子之外,其他所有的分支结点,都长满了两个分支。
一颗高度为h,且含有 2^h -1次 的结点二叉树
比如说下面的图:
一、求满二叉树一共有多少个结点:
一共是4层,那就是:24 -1=16-1=15
2* 2 * 2 * 2 - 1 =16-1=15
二、求第h层的二叉树的结点有多少:
2h-1
比如说第四层的结点数:24-1= 23=2* 2 *2 =8
满二叉树是一种特殊的完全二叉树,而二叉树未必是满二叉树
2、完全二叉树
当完全二叉树,如果某个结点,有一个孩子时,只能是有左孩子,不可能有右孩子。
3、 二叉排序树:
可用于元素的排序、搜索
4、平衡二叉树:
四、二叉树的常考性质
1、树的结点数=总度数+1
度:就是有几个孩子。
总度数:分支的总数量。
n0:代表叶子
n1:代表单分支结点
n2:代表双分支结点
1.二叉树里边只可能有 度为0,1,2的这三结点。所以把这三种结点加起来就是n。
2.树的性质:树的结点个数=总度数+1
对于任何一棵树来说,除了根节点之外,每一个结点的头上都有分支。
3.度为1的结点有n1个,度为2的结点有n2个,每个节点会贡献两个度,所以乘以2。n1+2n2就是总度数。总度数+1=树的结点树。
n0=n2+1:
叶子结点个数 要 比二分支结点的个数 多一个
2、M叉树的第i层至多有2i-1个结点
比如说2叉树的第4层有几个结点:
24-1=23=8个。
3、高度为h的二叉树最多有2h-1个结点(也就是满二叉树)
五、完全二叉树的常考性质
1、完全二叉树求高度H
2、完全二叉树根据总结点n推出分结点个数
n0:代表叶子
n1:代表单分支结点
n2:代表双分支结点
n0+n2可以写成2n2+1,一定是奇数。而n0为0/1。——》
所以一个完全二叉树有偶数个结点,意味着n0+n1+n2是一个偶数。已知N0+n2肯定是奇数。所以为了让整个式子是偶数,那么n1是1
六:错题
1.已知结点,求出叶子结点
最后一个分结点序号=取下整数【结点总数 / 2】
叶子结点=总结点 —最后一个分结点序号
这张图,一共有12个结点,那么叶子结点有6个(7-12)
那么如何套公式呢?
如下面的题:
总结点有:n=12, n/2=6
叶子结点:12-6=6
2.已知叶子结点,求出结点
根据上面的公式进行反推:
叶子结点=n-(n/2)
3. 二叉链表求空指针数:
每个结点都有两个指针位置,总指针是2n
非空指针数 = 总分支数=n-1
例如下面有 三个结点,那么指针数是2.
前两个结点,每个都相差1个空指针,最后一个相差2个空指针
前两个是:n-1个结点每个相差一个,也就是1*(n-1)= n-1
最后一个是:相差两个,1*2=2
那么前两个加上最后一个: n-1+2=n+1
4.满二叉树
: