學習數據結構--第四章:樹與二叉樹(二叉樹的概念、性質、特殊二叉樹)

第四章:樹與二叉樹(二叉樹的邏輯結構)

1.二叉樹

二叉樹是樹結構的一種,故二叉樹也是邏輯結構。

二叉樹:二叉樹是n(n≥0)個結點的有限集合。

  • 1)n=0時,二叉樹爲空;
  • 2)n>0時,由根結點和兩個互不相交的被稱爲根的左子樹和右子樹組成。左子樹和右子樹也分別是一棵二叉樹。

五種基本形態

三個結點的二叉樹有多少種??

2.二叉樹VS度爲2的有序樹

  • 1)二叉樹可以爲空,而度爲2的有序樹至少有三個結點

度爲2的有序樹,則說明必須有一個結點的子節點爲兩個

  • 2)二叉樹的孩子結點始終有左右之分,而度爲2有序樹的孩子結點次序是相對的

在度爲2的有序樹中,如果有一個結點只有一個孩子結點,則是不分左右的。

3.特殊二叉樹

3.1滿二叉樹

滿二叉樹:一棵高度爲h,且含有2^h-1個結點的二叉樹爲滿二叉樹。

上篇文章中講樹的時候我們知道:高度爲h的m叉樹至多有(m^h-1)/(m-1) 個結點。這裏我們把m換成2,即可。


編號規則:從上到下、從左到右;

觀察上述編號可以發現下面結論:

對於編號爲 i 的結點,若存在,其雙親的編號爲(i/2取整),左孩子爲2i,右孩子爲2i+1

3.2完全二叉樹

完全二叉樹:設一個高度爲h、有n個結點的二叉樹,當且僅當其每個結點都與高度爲h的滿二叉樹中編號1~n的結點一 一對應時,稱爲完全二叉樹。


我們可以發現,如果一個二叉樹是完全二叉樹,則此二叉樹除了最後一層結點數不滿外,其餘層結點數都是滿的。

完全二叉樹的性質

  • 若 i <= n/2 取整數,則結點 i 爲分支結點,否則爲葉子結點。

i 是結點編號,n 是結點的總數。

  • 葉子結點只可能在層次最大的兩層上出現。對於最大層次的葉子結點,都依次排在最左邊的位置上。
  • 度爲1的結點若存在,則可能只有一個,且是編號最大的分支結點,並且孩子結點一定是左結點。

因爲完全二叉樹的編號是按照從上到下,從左到右編號的,而且除了最後一層結點數不滿外,其餘層結點數都是滿的,所以度爲1的結點可能存在也可能不存在,如果存在只可能在最後一個結點的雙親結點才能出現度爲1的結點。

所有的性質都緊緊依賴完全二叉樹的編號是從上到下,從左到右的。

3.3二叉排序樹

二叉排序樹:一棵二叉樹,若樹非空則具有如下性質:

  • 對任意結點若存在左子樹或右子樹,則其左子樹上所有結點的關鍵字均小於該結點。
  • 右子樹上所有結點的關鍵字均大於該結點。

可以發現二叉排序樹的左子樹和右子樹都是一棵二叉排序樹。

3.4平衡二叉樹

平衡二叉樹:樹上任意結點左子樹右子樹的深度差不超過1

f複習:高度和深度的定義,某節點的深度是指從根節點到該節點的最長簡單路徑邊的條數,而高度是指從該節點到葉子節點的最長簡單路徑邊的條數。記住:深度是從根結點到該結點的邊數的,而高度是從葉子節點往上數到該結點的邊數。
注意:這裏邊的條數是規定根節點的深度和葉子節點的高度是0;
所以樹的深度和高度是相等的,而對其他節點來說深度和高度不一定相等。

上圖就不是一個平衡二叉樹:

上圖根結點的左子樹深度爲3,右子樹深度爲2,3-2=1,沒問題,但是A結點的左子樹深度爲2,而A結點的右子樹深度爲0,2-0=2>1,不對。

4.二叉樹的性質

4.1n0=n2+1

  • 非空二叉樹上的葉子結點數等於度爲2的結點數加1,即n0=n2+1.

如圖上述二叉樹:

  • 首先我們知道二叉樹的結點數等於各種度數二叉樹結點的和,即n=n0+n1+n2
  • 另外n=0*n0+1*n1+2*n2+1,這個計算方法是按照子節點個數計算的,0*n0代表葉子節點的子節點數(葉子結點子節點數爲0,故乘以0),1*n1代表子節點數爲1的結點的個數,2*n2代表子節點數爲2的結點的個數,最後加上1,代表根結點。

將上面的兩個關於n的式子相減即可得到:n0=n2+1

4.2性質2

非空二叉樹上第 k 層上至多有 2^(k-1)個結點(k≥1)

4.3性質3

高度爲h的二叉樹至多有2^h -1個結點(h>=1) [滿二叉樹結點的總數]

4.4性質4

4)對完全二叉樹按從上到下、從左到右的順序依次編號1,2,…n,則有以下關係:

  • 當 i>1 時,結點的雙親結點標號爲 i/2 取整數, 即當 i 爲偶數時,其雙親結點的編號爲 i/2 ,他是雙親結點的左孩子;當爲奇數時,其雙親結點的編號爲(i-1)/2, 他是雙親結點的右孩子。
  • 當 2i <= n 時,結點 i 的左孩子編號爲 2i ,否則無左孩子
  • 當 2i+1<=n 時,結點 i 的右孩子編號爲 2i+1,否則無右孩子

4.5性質5


則第h層,2^(h-1) =< i < 2^h ,對該式子兩端取對數,則h-1 =< log2i< h,我們對log2i取下界,則得到h-1,再加1則得到系欸但所在的層次:[log2i] +1

4.6性質6

由性質3:高度爲h的二叉樹至多有2^h -1個結點(h>=1)。令2^h -1=n,則可以推出 h = log2(n+1),至於這裏爲啥要取上界,是因爲這個性質3,是按照滿二叉樹情況,但是完全二叉樹的最後一層結點數不一定能達到最多,但也要算一層。

關於數據結構的知識,持續更新中,歡迎關注公衆號理木客

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