以下性质均建立在:根结点为第1层的前提下
性质1:第i层上至多有2i-1个结点(i≥1)
第一层为根结点,1个,21-1=20=1 ;
第二层至多两个,22-1=21=2;
归纳易得该性质
性质2:深度为k的二叉树至多有2k-1个结点(k≥1)
是2k-1,而不是2k-1,注意与性质1的区别。
性质2其实是由性质1得出:
20+21+22+…+2k-1 = 2k-1,由等比数列求和可得
性质3:终端结点数为n0,度为2的结点数为n2,则n0=n2+1
终端结点即为叶子结点,除开叶子,剩下都是度为 1 或 2 的结点,设度为1的结点数为n1,
则树的结点总数 n=n0+n1+n2 ①
此时转换角度,关注连接线数,显然度数就是各结点的连接线数,但根结点比较特殊:它只有分支出去,而没有分支进入.
因此分支总线数= n-1 =n1+2n2 ② (0*n0 + 1 * n1 + 2 *n2)
由①跟②,可得 n0=n2+1
性质4:有n个结点的完全二叉树深度为floor(log2n) + 1 (floor(x)表示x向下取整)
设深度为k
因为完全二叉树的叶子结点只会出现在最下面的两层,因此它的结点数一定少于等于同样深度的满二叉树的结点数 2k-1,但同时也一定多于 深度-1的满二叉树的结点数 2k-1-1。
即满足: 2k-1-1 < n ≤ 2k-1 ,又因为n是整数,所以不等式等价于:2k-1 ≤ n < 2k ,两边取对数,得 k-1≤log2n<k , 而k也是整数,向上取整不满足log2n<k,即只能向下取整,可得 k = floor(log2n) + 1
性质5:对有n个结点的完全二叉树的结点按层序编号(从第1层到第floor(log2n) + 1 层,从左到右),对任一结点i(1≤i≤n)有:
- 若i=1,则i为根结点,无双亲;若i>1,则其双亲是结点floor(i/2)
- 若2i >n,则结点 i 无左孩子(其实i是叶子结点);否则其左孩子为2i
- 若2i+1 > n , 则结点 i 无右孩子(同2,i是叶子结点);否则其右孩子为2i+1
该性质是对完全二叉树的简单拓展:
回顾完全二叉树的定义:
按层序编号,编号为i的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同。
因为是完全二叉树,所以任意结点 i 对应的孩子结点必定是 2i 与 2i +1 (若有的话),第2.3.条得证。
而显然,floor(2i / 2) = floor( (2i+1)/2) =i ,当然2i 与 2i +1 可以替换为任意 i ,结论同样成立。第1.条得证。
内容参考自《大话数据结构》
有误欢迎提出