二叉树(部分)

  二叉树几个重要的性质:

    1、二叉树的第 i 层上至多有2^(i-1) 个节点

      利用归纳法容易证得此性质。

      现在假定对所有的j,1<=j<i,命题成立,即第j层上至多有2^(j-1)个节点。那么,可以证明 j = i 时命题也成立。

      由归纳法假设:第 i - 1 层上至多有 2^(i-2)个结点。由于二叉树的每个结点的度最多为2,故在第 i 层上的最大结点数为第 i - 1 层上的最大结点数为第 i - 1层上的最大结点数的2倍,即2*2^(i-2) = 2^(i-1)。

    2、深度为k的二叉树的最大结点数为

      ∑(i=1 -> k    第 i 层上的最大节点数)  = ∑ 2^(i - 1) ( i = 1 -> k) = 2^k - 1 

    3、对任何一棵二叉树T, 如果其终端节点数为n0 , 度为2的结点数为n2,则n0 = n2 + 1。

    4、具有 n 个节点的完全二叉树的深度为[ log2 ( n ) ] + 1 。

    5、如果对一棵有 n 个结点的完全二叉树的结点按层序编号,则对任意结点 i ,有

      (1)如果 i = 1, 则结点 i 是二叉树的根,无双亲; 如果 i > 1, 则双亲PARENT( i )是结点[ i / 2 ]。

      (2)如果2i > n,则结点 i  无左孩子;否则其左孩子为LCHILD( i )是结点2i。

      (3)如果对2i + 1 > n ,则结点 i 无右孩子;否则其右孩子RCHILD( i )是结点 2i + 1;

    

    拓展:(课后习题)

  一棵深度为H的满k叉树有如下性质:第H层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树。如果按层次顺序从1开始对全部结点编号,问:

      (1) 各层的结点数目是多少?

      (2) 编号为p的结点的父结点(若存在)的编号是多少?

      (3) 编号为p的结点的第i个儿子结点(若存在)的编号是多少?

      (4) 编号为p的结点有右兄弟的条件是什么?其右兄弟的编号是多少?

  解:  

  (1)  (K^H -1) / (K - 1)

  (2)如果p是其双亲的最小的孩子(右孩子),则p减去根结点的一个结点,应是k的整数倍,该整数即为所在的组数,每一组为一棵满k叉树,正好应为双亲结点的编号。如果p是其双亲的最大的孩子(左孩子),则p+k-1为其最小的弟弟,再减去一个根结点,除以k,即为其双亲结点的编号。

    综合来说,对于p是左孩子的情况,i=(p+k-2)/k;对于p是右孩子的情况,i=(p-1)/k

    如果左孩子的编号为p,则其右孩子编号必为p+k-1,所以,其双亲结点的编号为 i = [ (p + k - 2) / k]  向下取整,如1.5向下取整为1

    (3)结点p的右孩子的编号为kp+1,左孩子的编号为kp+1-k+1=k(p-1)+2,第i个孩子的编号为k(p-1)+2+i-1=kp-k+i+1。

    (4)当(p-1)%k != 0时,结点p有右兄弟,其右兄弟的编号为p+1。

  

   已知一棵度为k的树中有个度为1的结点个度为2的结点,…,个度为k的结点,问该树中有多少个叶子结点?

    解:根据树的定义,在一颗树中,除树根结点外,每个结点有且仅有一个前驱结点,也就是说,每个结点与指向它的一个分支一一对应,所以除树根结点之外的结点树等于所有结点的分支数,即度数,从而可得树中的结点数等于所有结点的度数加1。总结点数为

 

而度为0的结点数就应为总结点数减去度不为0的结点数的总和,即

 

   已知在一棵含有n个结点的树中,只有度为k的分支结点和度为0的叶子结点。试求该树含有的叶子节点数目。

解:利用上题结论易得结果。设度为k的结点个数为,则总结点数为。叶子结点的数目应等于总结点数减去度不为0的结点的数目,即

   

  一棵含有n个结点的k叉树,可能达到的最大深度和最小深度各为多少?

解:能达到最大深度的树是单支树,其深度为n。满k叉树的深度最小,其深度为

           (证明见徐孝凯著数据结构实用教程P166)

  证明:一棵满k叉树上的叶子结点数和非叶子结点数之间满足以下关系:

           

解:一棵满k叉树的最后一层(深度为h)的结点数(叶子结点数)为,其总结点数为,则非叶子结点数,从而得

        

  

            

 

   

转载于:https://www.cnblogs.com/iewx/p/7868793.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值