性质一
在二叉树中的第i层上至多有
2(i−1)
个结点。
第一层是根结点,只有一个,所以
2(1−1)=20=1
,
第二层有两个,
2(2−1)=21=2
…
通过数学归纳法,在二叉树的第i层上至多有
2i−1
个结点。
性质二
深度为k的二叉树至多有
2k−1
个结点,注意是
2k
之后再减一,而不是
2k−1
如果只有一层,则有
21−1=1
个结点,
如果两层,则有
22−1=3
个结点,
如果两层,则有
23−1=7
个结点,
…
因此如果有k层,则总共有
2k−1
个结点。
性质三
对任何一棵二叉树,如果其终端结点数为n0
,度为2的结点数为n2
,则n0=n2+1
证明:终端结点数其实就是叶子结点数,一棵二叉树,除了叶子结点外,剩下的就是度为1或者2的结点数了,假设度为1的结点数为n1
,则树T的总结点数n=n0+n1+n2
。
再从边来考虑,二叉树的边数为n-1
,而总边数同样等于n1+2*n2
,因此n-1=n0+n1+n2=n1+2*n2
,解得n0=n2+1
。
性质四
具有n个结点的完全二叉树的深度为 ⌊log2n⌋ ( ⌊x⌋ 表示不大于x的最大整数)。
证明:由满二叉树的定义可知,深度为k的满二叉树的结点数n一定是 2k−1 ,因为这是最多的结点个数,那么对于 n=2k−1 倒推得到满二叉树的度数为 k=log2(n+1) ,比如结点数为15的满二叉树,度为4。
完全二叉树是一棵具有n个结点的二叉树,其叶子结点只会出现在最下面两层。其结点数一定少于等于同样度数的满二叉树结点数 2k−1 ,但一定多于 2k−1−1 。即满足 2k−1−1<n≤2k−1 。由于结点数n是整数, n≤2k−1 意味着 n<2k , n≥2k−1 ,所以 2k−1≤n<2n ,两边同时取对数,得到 k−1≤log2n<k ,而k作为度数也是整数,因此 k=⌊log2n⌋+1 。
性质五
如果对一棵有n个结点的完全二叉树(其深度为
⌊log2n⌋
)的结点按层序编号(从第一层到第
⌊log2n⌋
+1层,每层从左到右),对任一结点i(
1≤i≤n
)有:
1. 如果i=1
,则结点i是二叉树的根,无双亲;如果i>1
,则双亲是结点
⌊i/2⌋
。
2. 如果2i>n
,则结点i无左孩子(结点i为叶子结点);否则其左孩子就是结点2i
。
3. 如果2i+1>n
,则结点i无右孩子;否则其右孩子是2i+1。
例:如下图是一个完全二叉树,度为4,总结点数为10
对于第一条是显然的,i=1
时就是根结点。i>1
时,比如结点7,它的双亲
⌊7/2⌋
,结点9,它的双亲就是
⌊9/2⌋=4
。
第二条,比如结点6,因为2×6=12
大于结点总数10,所以结点6无左孩子,它是叶子结点。而结点5,因为2×5=10
刚好等于结点总数10,所以它的左孩子是结点10。
第三条,比如结点5,因为2×5+1=11
,大于结点总数10,所以它无右孩子。而结点3,因为2×3+1=7
小于10,所以它的右孩子是结点7。