树、二叉树及森林的部分性质及证明

树的性质:

1、高度为 m 的树中第 i 层上至多有 mi-1 个结点(i≥1)。

2、高度为 h 的 m 叉树至多有(mh-1)/(m-1)个结点。

     证明:等比数列求和 S=1+m+m2+......mh-2+mh-1=(mh-1)/(m-1)   , 注意等比数列求和的n指的是相数而不是最高项的次数。

3、具有n个结点的m叉树的最小高度为⌈logm(n(m-1)+1)⌉。

     证明:思路是只有当这n个结点建立的m叉树为满的时候,树的高度才会最低。   

                       层次           度为3时的结点数          度为m时的结点数

                         1                   3^0                                  m^0

                         2                   3^1                                  m^1

                         3                   3^2                                  m^2

                         ………………………………………………

                          i                    3^(i-1)                               m^(i-1)

                         ………………………………………………

                          h                  3^(h-1)                               m^(h-1)

         所以得到n=m^0+m^1+…+m^(h-1)=(m^h-1)/(m-1),解得h>=logm(n(m-1)+1),即logm(n(m-1)+1)向上取整。

4、树的路径长度是指树根到每个结点的路径长的总和,根到每个结点的路径长度的最大值应是树的高度减1。(注意与哈夫曼树的带权路径长度区别)

5、常见的树结点与度之间的关系:

     a.   总结点数=n0+n1+n2+....+nm

    b.   总分支数=1n1+2n2+....+mnm(度为m的结点引出m条分支)

    c. 总结点数=总分支数+1

 

 二叉树的性质:

1、在含有n个结点的二叉链表中,含有n+1个空链域(重要结论)。

     证明:首先要明白链域是什么意思:

    a.  链就代表指针,就是下个元素的地址。

    b.  链表中一个结点可以分为两个部分,也可以说是区域,一个区域存放指针,被称为指针域,另一个区域存放数据,叫做数据域。链表中的指针域中的内容就是指针,单链表中一个指针域存放一个指针,双链表中两个指针域各存放一个指针。

     

            

2、若 i≤⌊n/2⌋ ,则结点 i 为分支结点,否则为叶子结点。

3、若 n 为奇数,则每个分支结点都有左孩子和右孩子;若 n 为偶数,则编号最大的分支结点(编号为n/2)只有左孩子,没有右孩子,其余分支结点左、右孩子都有(默认是指完全二叉树,包括满二叉树)。

  证明:性质2和3本质上是同一件事,即:

     如何证明对于编号为 i 的结点,若有双亲,则其双亲为 ⌊i/2⌋,若有左孩子,则左孩子为2i;若有右孩子,则右孩子为2i+1。

     

                             

   推广到满 m 叉树:

    规定:高度h,满m叉树,根结点在第1层,顺序编号。

       

 4、具有n个(n>0)结点的完全二叉树的高度为 ⌈log2(n+1)⌉ 或 ⌊log2n⌋ +1 。

    证明:

              

 5、分支结点:就是总结点减去叶子结点。

 6、二叉树的宽度:具有最多结点数的层中包含的结点数。

森林的性质:

1、对森林所对应的二叉树进行中序遍历,相当于对森林中的每一棵树从左到右进行后序遍历

 

posted @ 2020-09-02 20:51  喵喵队立大功  阅读(1118)  评论(0编辑  收藏  举报