一.树的基本概念
什么是树?
树,即用一对多的关系来储存数据元素。
当结点数为0时,即为一棵空树。
相关术语
Degree of a node(结点的度):结点的子树个数;
Degree of a tree(树的度): 树的所有结点中的度的最大值;
Parent,Children,Siblings,Leaf(叶子结点),Depth(树的深度)
二.二叉树
什么是二叉树?
每个结点下最多有两棵子树,并且子树之间是有序的,即会分成左孩子和右孩子
对于普通的树来说,上面两棵树是完全一致的,但是对于二叉树来说是不同的。
二叉树的性质
1.结点数和分支数的关系
e (边数) = n (节点数)- 1
非常好理解,因为除了树根之外,每一个结点都会连着一条边
2.第i层的结点数
每一层结点数最小为1,最大为
3.最大结点数
对于深度为n的树,最大结点总数为
这个直接中学知识等比数列求和公式一算就完事
4.度为0的结点数和度为2的结点数关系
对于非空树,n0 = n2+1
推导过程:
e = n - 1; (边数等于结点数减一)
e = 2n2 + n1;
n = n0+ n1 + n2;
联立以上三式,即可解出n0 = n2 + 1
拓展:
对于度最大为3的树,度为0的结点数为多少?
e = n-1;
n= n0 + n1 + n2 + n3;
e = n1 + 2n2 + 3n3;
联立以上三式 解得n0 = n2 + 2n3 +1
可以归纳出规律:
n0 =
完全二叉树的特殊性质
完全二叉树和满二叉树的区别
满二叉树(Full Binary Tree):每个节点要么是叶子节点,要么有两个子节点。换句话说,除了叶子节点外,每个节点都有两个子节点。
完全二叉树(Complete Binary Tree):除了最底层外,每层的节点都必须填满,并且最底层的节点尽可能地向左靠拢。即元素是,从上到下,从左到右,依次填充的。(注意这个依次,就是元素是按照1234..这样的顺序填充的)
1.结点数为n的完全二叉树的深度为[
]+ 1
2.i结点的双亲,左右孩子结点
对于第i个结点,比如说结点4,它的父母结点为2,它的左孩子为8,右孩子为9
可以归纳出,父母结点的序号为[i/2],左孩子的序号为2i,右孩子的序号为2i+1
3.度为1的结点个数
当结点数为偶数时,度为1的结点数为1;当结点数为奇数时,度为1的结点数就为0
4.叶子结点个数
结点中有[n/2]个结点为非叶子结点
叶子结点数为n-[n/2]
例题:
一棵完全二叉树结点数为234
(1)深度为?
(2)第7层和第8层有多少个结点
(3)叶子结点数,度为1和度为2的结点数各有多少?
当然最后一题还可以直接用234/2 = 117得到叶子结点个数
总结:
性质 普通二叉树 完全二叉树 1 边数 = 结点数 - 1 边数 = 结点数 - 1 2 第i层上至多有 2^(i-1) 个结点 第i层上至多有 2^(i−1)个结点 3 深度为k的二叉树上最多有 2^k -1 个结点 深度为k的二叉树上最多有2^k - 1个结点 4 叶子结点数 n0 = n2 + 1 叶子结点数 n0=n2+1 5 无特定深度计算公式 深度为 ⌊log2(n)⌋+1 6 无特定公式 第i个结点:双亲为 ⌊i/2⌋,左孩子为 2i,右孩子为 2i+1 7 无特定度数关系 结点数为偶数时,只有一个度为1的结点;为奇数时,没有度为1的结点 8 无特定叶子结点关系 叶子结点数超过 ⌊n/2⌋