树到二叉树的转换、二叉树的深层特性

上节实现了复杂的通用树结构,通用树结构中的每个结点都可以有任意多的孩子,都可以有无限形态,

工程中很少使用这么复杂的树,这节理论介绍另一种树结构模型 

目录

1、树到二叉树的转换 

2、 二叉树的深层特性


1、树到二叉树的转换 

通用树结构回顾 

      -双亲孩子表示法 

              ● 每个结点都有一个指向其双亲的指针 

              ● 每个结点都有若干个指向其孩子的指针 

        

另一种树结构模型 

      -孩子兄弟表示法 

                    每个结点都有一个指向其第一个孩子的指针 

                    每个结点都有一个指向其第一个右兄弟的指针

        

孩子兄弟表示法的特点 

           1. 能够表示任意的树形结构 

           2. 每个结点包含一个数据成员和两个指针成员 

           3. 孩子结点指针和兄弟结点指针构成了“树杈” 

二叉树的定义 

      -二叉树是由 n(n ≥ 0) 个结点组成的有限集合,该集合或者为空,或者是由一个

          根结点加上两棵分别称为左子树右子树的、互不相交的二叉树组成。 

     

 

二叉树的5种形态 

    

特殊的二叉树 

  -满二叉树(Full Binary Tree) 

       ● 如果二叉树中所有分支结点的度数都为2, 且叶子结点都在同一层次上,则称这类二叉树为满二叉树。 

  -完全二叉树(Complete Binary Tree) 

       ● 如果一棵具有n个结点的高度为k的二叉树,它的每一个结点都与高度为k的满二叉树

          编号为1 ~ n的结点一一对应, 则称这棵二叉树为完全二叉树。 (从上到下从左到右编号)

完全二叉树的特性 

  -同样结点数的二叉树,完全二叉树的高度最小 

  -完全二叉树的叶结点仅出现在最下面两层 

       ● 最底层的叶结点一定出现在左边 

       ● 倒数第二层的叶结点一定出现在右边 

       ● 完全二叉树中度为1的结点只有左孩子

                

         满二叉树是完全二叉树,反过来看完全二叉树是还未形成的满二叉树

小结 

  -通用树结构采用了双亲结点表示法进行描述 

  -孩子兄弟表示法有能力描述任意类型的树结构 

  -孩子兄弟表示法能够将通用树转化为二叉树 

  -二叉树是最多只有两个孩子的树 


2、 二叉树的深层特性

性质1

       ● 在二叉树的第 i 层最多有 \LARGE {\color{Red} ^{2^{i - 1}}} 个结点 (i ≥ 1) 

          第一层最多有 \large {\color{Red} ^{2^{1 - 1} = 1}} 个结点 

          第二层最多有 \large {\color{Red} ^{2^{2 - 1} = 2}} 个结点 

          第三层最多有 \large {\color{Red} ^{2^{3 - 1} = 4}} 个结点 

          ......

                    

性质2 

       ● 高度为 k 的二叉树最多有 \LARGE {\color{Red} ^{2^{k} - 1}}个结点 (k ≥ 0) 

          如果有一层,最多有 {\color{Cyan} 1 = } {\color{Red} {\ 2^{1} - 1 = 1}} 个结点 

          如果有两层,最多有 {\color{Cyan} 1 + 2 = } {\color{Red} {\ 2^{2} - 1 = 3}} 个结点 

          如果有三层,最多有 {\color{Cyan} 1 + 2 + 4 = } {\color{Red} {\ 2^{3} - 1 = 7}} 个结点 

          ......

性质3 

       ● 对任何一棵二叉树,如果其叶结点有 \large {\color{Red} n_0{}} 个,度为 2 的非叶结点有 \large {\color{Red} n_2{}}  个,则有 \large {\color{Red} n_0{} = n_2{} + 1 }

          证明:假设二叉树中度1的结点有 \large {\color{Red} n_1{}} 个且总结点为 n 个,则:\large {\color{Red} n = n_0{} + n_1{} + n_2{} }

                     假设二叉树中连接父结点与子结点间的为 条,则: \large {\color{Red} e = n_1{} + 2n_2{} = n-1 }

                     所以: \large {\color{Red} n_0{} = n_2{} + 1 }

 

性质4 

       ● 具有n个结点的完全二叉树的高度为 {\color{Red} \left \lfloor \log _2{} n \right \rfloor + 1 }  (⌊X⌋表示不大于X的最大整数) 

           证明:假设这n个结点组成的完全二叉树高度为k 、则: {\color{Red} 2^{k - 1} - 1< n \leq 2^{k} - 1 }

           因为n为整数,所以: {\color{Red} 2^{k - 1} \leq n < 2^{k} }

           取对数: {\color{Red} k -1 \leq \log _2{} n < k}

           因为k为整数,所以: {\color{Red} k = \left \lfloor \log _2{} n \right \rfloor + 1 }

          

性质5 (完全二叉树特有,普通二叉树不具备)

       ● 一棵有 n 个结点的完全二叉树(高度为{\color{Red} \left \lfloor \log _2{} n \right \rfloor + 1 }) ,按层次对结点进行编号(从上到下,从左到右),

          对任意结点 i 有: 

                   如果 i = 1, 则结点 i 是二叉树的根 

                   如果 i > 1 则其双亲结点为 ⌊i / 2⌋ 

                   如果 2i ≤ n , 则结点 i 的左孩子为 2i 

                   如果 2i > n , 则结点 i 无左孩子 

                   如果 2i +1 ≤ n , 则结点i的右孩子为 2i + 1

                   如果 2i +1 > n , 则结点 i 无右孩子 

                    

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值