1、若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有
2
i
?
1
2^{i-1}
2i?1个节点
证明:
当
i
=
1
,
根
节
点
有
一
个
,
2
i
?
1
=
2
0
=
1
,
正
确
假
设
i
?
1
成
立
,
即
第
i
?
1
层
上
至
多
有
2
i
?
2
个
结
点
由
于
二
叉
树
结
点
的
度
最
多
为
2
,
故
在
第
i
层
上
的
最
大
结
点
数
位
第
i
?
1
层
上
最
大
节
点
数
的
2
倍
。
即
2
?
2
i
?
2
=
2
i
?
1
当i = 1,根节点有一个,2^{i-1} = 2^0 = 1,正确 \\ 假设i-1成立,即第i-1层上至多有2^{i-2}个结点 \\ 由于二叉树结点的度最多为2,故在第i层上的最大结点数位第i-1层上最大节点数的2倍。即2*2^{i-2} = 2^{i-1}
当i=1,根节点有一个,2i?1=20=1,正确假设i?1成立,即第i?1层上至多有2i?2个结点由于二叉树结点的度最多为2,故在第i层上的最大结点数位第i?1层上最大节点数的2倍。即2?2i?2=2i?1
2、若规定只有根节点的二叉树的深度为1,则深度为k的二叉树的最大节点数是
2
k
?
1
2^k-1
2k?1
证明:
? 当
k
=
1
k=1
k=1时,根节点有一个,
2
k
?
1
=
2
1
?
1
=
1
2^k-1 = 2^1-1 = 1
2k?1=21?1=1,正确
? 假设
k
?
1
k-1
k?1成立,第
i
?
1
i-1
i?1层的结点个数为
2
k
?
1
?
1
2^{k-1}-1
2k?1?1
? 由于二叉树第k层最多有
2
k
?
1
2^{k-1}
2k?1个结点。那么二叉树的最大结点个数为:
2
k
?
1
+
2
k
?
1
?
1
=
2
k
?
1
2^{k-1}+2^{k-1}-1=2^{k}-1
2k?1+2k?1?1=2k?1
3、对任何一棵二叉树,如果其叶子节点个数为
n
0
n_0
n0?,度为2的非叶子节点个数为
n
2
n_2
n2?,则
n
0
=
n
2
+
1
n_0=n_2+1
n0?=n2?+1(注意这里的度是出度)
证明:
? 已知,叶子节点的个数为
n
0
n_0
n0?,度为2的结点数为
n
2
n_2
n2?,度为1的结点数为
n
1
n_1
n1?
? 由于二叉树中的所有结点的度只能为0、1、2;故二叉树的结点总数为:
n
=
n
0
+
n
1
+
n
2
n = n_0+n_1+n_2
n=n0?+n1?+n2?
? 除了根节点外,其他结点都有一个分支进入,设B为分支总数,则
n
=
B
+
1
n = B+1
n=B+1
? 由于这些分支均是由度为1或2的结点出发。则
?
B
=
n
1
+
2
n
2
B = n_1+2n_2
B=n1?+2n2?,
? 综上:
?
n
0
+
n
1
+
n
2
=
n
1
+
2
n
2
+
1
n_0+n_1+n_2 = n_1+2n_2+1
n0?+n1?+n2?=n1?+2n2?+1
4、具有n个节点的完全二叉树的深度k为:
?
l
o
g
2
n
+
1
?
\lceil log_2{n+1} \rceil
?log2?n+1?或者(
?
l
o
g
2
n
?
+
1
\lfloor log_2n \rfloor+1
?log2?n?+1)
证明:
?
k
?
1
层
满
二
叉
树
结
点
数
<
k
层
完
全
二
叉
树
结
点
数
<
=
k
层
满
二
叉
树
结
点
数
k-1层满二叉树结点数<k层完全二叉树结点数<=k层满二叉树结点数
k?1层满二叉树结点数<k层完全二叉树结点数<=k层满二叉树结点数
?
2
k
?
1
?
1
<
n
<
=
2
k
?
1
2^{k-1}-1<n<=2^{k}-1
2k?1?1<n<=2k?1
?
2
k
?
1
<
=
n
<
2
k
2^{k-1}<=n<2^k
2k?1<=n<2k
?
k
?
1
<
=
l
o
g
2
n
<
k
k-1<=log_2{n}<k
k?1<=log2?n<k
? k是整数,
k
=
?
l
o
g
2
n
?
+
1
k = \lfloor log_2n \rfloor+1
k=?log2?n?+1
5、对于具有n个节点的完全二叉树,如果按照从上至下从左至右的顺序对所有结点从0开始编号,则对于序号为i的节点有:
(1)如果i>=0,则序号为i节点的双亲结点的序号为
(
i
+
1
)
/
/
2
(i+1) // 2
(i+1)//2;如果i=0,则序号i节点无双亲结点,i就是根节点
(2)如果2i+1<n,则序号i结点的左孩子的序号为2i+1,右孩子的序号为2i+2;如果2i+1>=n,则序号i节点无孩子节点
? 例子:编号为3 的子节点是:2×3+1=7,2×3+2=8;编号3的父节点是:(3-1)//2 = 1