1. 程式人生 > >二叉樹和完全二叉樹一些規律

二叉樹和完全二叉樹一些規律

1、二叉樹具有以下規律:

      1)二叉樹高度為i所在的層至多有 2^{i}個節點

      2)高度為k的二叉樹至多有 2^{k+1}-1個節點

      3)對於任何一棵二叉樹,若度為2的節點數有n2個,則葉子數有n0個,則葉子數n0必定為n2+1即n0=n2+1;

注意:高度是從0開始計算的,也就是說二叉樹最後一層的高度為0.

證3)

       二叉樹全部節點數為 葉子數、度為1的節點數和度為2的節點數之和,即 n = n0 + n1 + n2。

       而二叉樹的全部節點數可以表示為總分支數加1,即 n = B + 1;

       而總分支數 B = n1 + 2n2

       綜上可得:    n1 +2n2 + 1 = no + n1 + n2   ===》   n0 = n2 + 1

2、完全二叉樹具有以下規律:

     1)節點數為N的完全二叉樹,其高度為\left \lfloor logN \right \rfloor (向下取整),也就是說該樹一共有\left \lfloor logN \right \rfloor

 + 1 層。如節點數為3的完全二叉樹,其高度為1(即兩層,第一層高度為0);.

     2)對於完全二叉樹,若從上至下、從左至右編號,則編號為i的節點,其左孩子節點編號為2i,右孩子節點編號為2i+1,父親節點為i/2;

   

證1):假設完全二叉樹有k層,完全二叉樹的總節點數N在k-1層的滿二叉樹和k層的滿二叉樹之間,即:

                                2^{k-1}

 - 1 < N  \leq 2^{k} - 1

       兩邊同時加1得:

                           2^{k-1}  < N + 1 \leq 2^{k}      ====》   2^{k-1}  \leq N  < 2^{k}

       兩邊同時取對數得:

                              k - 1   \leq  logN < k

        所以 k =   \left \lfloor logN \right \rfloor + 1,即高度為\left \lfloor logN \right \rfloor 向下取整。

證2)

        

       對於完全二叉樹第k層中編號為i的節點,在第k層中其前面有x = i - 2^{k-1}  個節點(這裡2^{k-1}的指的是前k-1層節點總數);在第         k層中第i個節點後面有 y = 2^{k-1} - x - 1個節點。編號為i的節點其左孩子節點為:

                    i + y +2x + 1 = i + 2^{k-1} - x -1 + 2x+ 1 = i + 2^{k-1} + x =i + 2^{k-1} + i - 2^{k-1}  = 2i

       編號為i的節點其右孩子節點為:

                     i + y +2x + 2 = 2i + 1