樹到二叉樹的轉換(三十四)

        我們在之前學習了通用樹的相關知識,那麼通用樹的結構實現相對來說比較複雜,有沒有一種比較簡單的樹呢?我們在之前的通用樹結構中使用的是雙親孩子表示法每個結點都有一個指向其雙親的指針,每個結點都有若干個指向其孩子的指針。結構如下圖所示

圖片.png

        那麼還有另一種樹結構模型 -- 孩子兄弟表示法。每個結點都有一個指向其第一個孩子的指針,每個結點都有一個指向其第一個右兄弟的指針。結構如下圖所示

圖片.png

        孩子兄弟表示法的特點:1、能夠表示任意的樹形結構;2、每個結點包含一個數據成員和兩個指針成員;3、孩子結點指針和兄弟結點指針構成了“樹杈”。

        下來我們來看看二叉樹的定義:二叉樹是由 n ( n >= 0 ) 個結點組成的有限集合,該集合或者爲空,或者是由一個根結點加上兩顆分別稱爲左子樹和右子樹的、互不相交的二叉樹組成。二叉樹有以下 5 種形態

圖片.png

        下來我們來看看兩種特殊的二叉樹:滿二叉樹(Full Binary Tree)和完全二叉樹(Complete Binary Tree)

        1、滿二叉樹:如果二叉樹中所有分支結點的度數都爲 2,且葉子結點都在同一層次上,則稱這類二叉樹爲滿二叉樹。

        2、完全二叉樹:如果一顆具有 n 個結點的高度爲 K 的二叉樹,它的每一個結點都與高度 K 的滿二叉樹中編號爲 1 -- n 的結點一一對應。則稱這顆二叉樹爲完全二叉樹(從上到下從左到右編號)。

        完全二叉樹的相關特性:a> 同樣結點數的二叉樹,完全二叉樹的高度最小;b> 完全二叉樹的葉結點僅出現在最下面兩層:最底層的葉結點一定出現在左邊,倒數第二層的葉結點一定出現在右邊,完全二叉樹中度爲 1 的結點只有左孩子。如下圖所示

圖片.png

        下來我們來看看二叉樹的幾個性質:

        1、在二叉樹的第 i 層最多有 2i-1 個結點(i >= 1)。

            第一層最多有 21-1 = 1 個結點;

            第二層對多有 22-1 = 2 個結點;

             第三層最多有 23-1 = 4 個結點;

            ......

        2、高度爲 k 的二叉樹最多有 2k-1 個結點(k >= 0)。

            如果有一層,最多有 1 = 21-1 = 1 個結點;

            如果有二層,最多有 1 = 22-1 = 3 個結點;

            如果有三層,最多有 1 = 23-1 = 7 個結點;

            ......

        3、對任何一顆二叉樹,如果其葉結點有 n0 個,度爲 2 的非葉結點有 n2 個,則有 n0 = n2 + 1

            證明:假設二叉樹中度 1 的結點有 n1個且總結點爲 n 個,則: n = n0 + n1 + n2

                假設二叉樹中連接父結點與子結點間的邊爲 e 條,則:  e = n1 + 2n2 = n -1

                所以:n0 = n2 + 1

        4、具有 n 個結點的完全二叉樹的高度爲[log2n] + 1。([X] 表示不大於 X 的最大整數)。

            證明:假設這 n 個結點組成的完全二叉樹高度爲 k,則: 2k-1-1 < n <= 2k-1

                因爲 n 爲整數,所以: 2k-1 <= n < 2k

                取對數k-1 <= log2n < k

                因爲 k 爲整數,所以:k = [log2n] + 1

        5、一顆有 n 個結點的完全二叉樹(高度爲[log2n] + 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 無右孩子;

圖片.png

        通過對二叉樹的學習總結如下:1、通用樹結構採用了雙親結點表示法進行描述;2、孩子兄弟表示法有能力描述任意類型的樹結構;3、孩子兄弟表示法能夠將通用樹轉化爲二叉樹;4、二叉樹是最多隻有兩個孩子的樹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章