天天看點

C語言資料結構(13)--二叉樹的概念和性質2. 特殊二叉樹

1. 何為二叉樹

二叉樹,英文名Binary Tree,顧名思義,二叉樹就是每個節點最多有2個子節點的樹,這個說法好了解,但是不夠嚴謹。具體的說:

二叉樹節點是有限個,無限對于計算機來說處理不了。

二叉樹可以由0個節點,這種屬于空二叉樹。

二叉樹如果有超過0個節點,則必有根節點,而且根節點最多有兩個子節點,且子節點為根節點的子樹也為二叉樹。

注意二叉樹的左右子樹,是有順序的,不能互相調換,下圖為經典的二叉樹。

C語言資料結構(13)--二叉樹的概念和性質2. 特殊二叉樹

2. 特殊二叉樹

二叉樹是資料結構中非常重要的一種,可以說是鼎鼎大名,而且延伸出了許多特殊的二叉樹,此處先了解下他們的情況。

2.1 斜樹

顧名思義來,所有節點都往一邊傾斜的二叉樹叫做斜樹,都往左傾斜即為左斜樹,都往右傾斜即為右斜樹,如下圖。

C語言資料結構(13)--二叉樹的概念和性質2. 特殊二叉樹

2.2 滿二叉樹

什麼叫滿啊,英文是full,充滿、滿溢、不缺少的意思,也就是說所有分支節點都有左右子樹,且所有葉子都在同一層,稱為滿二叉樹。

在同樣深度的二叉樹中,滿二叉樹的節點個數最多,葉子數也最多,是以稱之為滿絕對不是浪得虛名。如下圖為滿二叉樹:

C語言資料結構(13)--二叉樹的概念和性質2. 特殊二叉樹

2.3 完全二叉樹

剛剛說完了有個滿二叉樹,好像這次的新概念完全二叉樹,應該差不多啊。完全二叉樹更多的是數學上的一種完全,表示從小到大一個不缺,叫做“完全”。

具體到二叉樹上,完全二叉樹是指按層序編号,如果是從第一個節點到最後一個節點都是依次排下來的,那麼這顆二叉樹即為完全二叉樹,如下圖,第三張沒有按照應有順序依次排下來,是以不是完全二叉樹。

C語言資料結構(13)--二叉樹的概念和性質2. 特殊二叉樹

3. 二叉樹的性質

性質是從概念觀察、思考得來,我們此處總結歸納一些有用的性質:

3.1 二叉樹的第n層,最多有2^(n-1)個節點

n=1,第一層,最多1個節點,2^(1-1)=1

n=2,第二層,最多2個節點,2^(2-1)=2

n=3,第三次,最多4個節點,2^(3-1)=4

3.2 深度為n的二叉樹,最多有2^n-1個節點

第一層最多有:2^0

第二層最多有:2^1

第三層最多有:2^2

是以深度為n的二叉樹,最多有:2^0 + 2^1 + 2^2+...+2^(n-1)個節點,根據等比數列的求和公式,即為2^n-1個。

3.3 如果二叉樹葉子節點數為a,度為2的節點數為c,則a=c+1

二叉樹中,葉子節點度為0,除了葉子節點還有度為1的節點和度為2的節點,設總節點數為n,度為1的節點數為b,則

式子1

n=a+b+c

1

2

觀察二叉樹能發現,除了根節點的上頭沒有一個連接配接線,其他節點都有,如下圖,是以連接配接線的數量為n-1。

C語言資料結構(13)--二叉樹的概念和性質2. 特殊二叉樹

從另一個角度出發,連接配接線的數量為度數,即為b+2c,是以有:

式子2:
n-1=b+2c
• 1
• 2      

将式子1帶入式子2,得出:

a=c+1

,簡單的數學題嘛。

還有一些性質,論證起來比較複雜,此處暫且不表了。

繼續閱讀