二叉树的性质

以下性质均建立在:根结点为第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)有:
  1. 若i=1,则i为根结点,无双亲;若i>1,则其双亲是结点floor(i/2)
  2. 若2i >n,则结点 i 无左孩子(其实i是叶子结点);否则其左孩子为2i
  3. 若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.条得证。

内容参考自《大话数据结构》

有误欢迎提出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值