數據結構與算法----樹(下)

  你們好,今天繼續學習樹的數據結構。在上一章,咱們講樹的孩子兄弟表示法時,提到了二叉樹。今天,咱們就來學習二叉樹的相關性質。數據結構

 1、二叉樹定義:學習

二叉樹(Binary Tree):n(n≥0)個結點的有限集合,該集合或者爲空集(爲空時,稱爲空樹),或者由一個根結點、兩棵互不相交、稱爲根結點的左子樹、右子樹的二叉樹組成。(Note:你們注意了,咱們在給出二叉樹定義時,咱們利用了遞歸概念。就是先給出二叉樹概念,再用二叉樹概念去解釋二叉樹。遞歸是一種很重要的方法,在數據結構中是很重要的,咱們會在後面章節中提到。)spa

咱們看圖來理解一下二叉樹:3d

image

 

2、二叉樹的特色:blog

  一、二叉樹中的結點度數,必定小於等於2。(根據二叉樹定義,由一個根結點、兩棵互不相交的稱爲根結點左子樹、右子樹的二叉樹組成。note:度數不是隻能是2,是至可能是2)遞歸

二、左子樹與右子樹是有順序的,次序不能顛倒。get

三、即便樹中只有一個子樹,也要區分左子樹、右子樹。it

 

3、二叉樹具備的5種基本形態:二叉樹

1.空二叉樹方法

2.只有根結點

3.只有左子樹的二叉樹

image

4.只有右子樹的二叉樹

image

5.既有左子樹又有右子樹

image

 

4、特殊二叉樹:

1.斜二叉樹:

   既然是斜二叉樹,就必定要有斜度。

image            image

上面這兩個圖,就是斜二叉樹。(note:看着是否是挺像線性表。其實,線性表就是二叉樹的特殊表現形式)

 

2.滿二叉樹:

顧名思義,既然是滿二叉樹,就是每一個結點都具有兩個子樹。如圖:

image

若是二叉樹中,每一個結點都具有左子樹、右子樹,而且全部葉子結點都在同一層中,這樣的二叉樹稱爲滿二叉樹。

滿二叉樹的特色:

a.葉子結點只能出如今最後一層,若是不是,就不能達到滿二叉樹。

b.非葉子結點的度數只能爲2,若是不是,就會出現「缺胳膊少腿」的現象。

c.在相同深度的二叉樹中,滿二叉樹的結點最多,葉子結點最多。

3.徹底二叉樹:

對一棵具備n個結點的二叉樹,按着層序編號,如編號爲i(1≤i≤n)的結點位置,與同等深度的滿二叉樹中編號爲i結點位置相同,則稱這樣的二叉樹爲徹底二叉樹。     徹底二叉樹很差理解,咱們看一下圖:

image   image

上面左圖,是一棵徹底二叉樹,右圖是一棵滿二叉樹。咱們在內心給右圖滿二叉樹按層序編號。經過左圖與右圖的對比,咱們發現,左圖中的任一結點,在右圖中都有與之相對應的結點。

下面再給出幾張不是徹底二叉樹的圖:

image  image    image

徹底二叉樹特色:

a.若是結點度數爲1,那麼只能是左子樹。(不存在只有右子樹結點)

b.葉子結點只能出如今最下兩層。

c.最下層的葉子結點,必定集中在左部連續位置。

d.倒數兩層,若是有葉子結點,必定集中在右部連續位置。

e.一樣結點數的樹,徹底二叉樹的深度最小。

5、二叉樹性質:

   接下來,咱們來學習一下二叉樹的性質。在實際應用中,都是經過二叉樹的性質來操做的。二叉樹的性質,是很是重要的概念。

a.在二叉樹中,第i層的結點總數最多2^(i-1)個

第一層: 1=2^(1-1)=2^0=1

第二層:2=2^(2-1)=2^1=2

第三層:4=2^(3-1)=2^2=4

……

……

b.深度爲k的二叉樹,結點總數等於2^k-1

深度爲1:1=2^1-1=1

深度爲2:3=2^2-1=3

深度爲3:7=2^3-1=7

……

……

c.若是n0是葉子結點,n2是度數爲2的結點。則n0=n2+1.

image

二叉樹中,除了葉子結點就是度數爲一、度數爲2的結點。咱們假設度數爲1的結點爲n一、度數爲2的結點爲n二、葉子結點爲n0.則樹中結點總數爲n=n0+n1+n2.咱們觀察上圖,研究一下節點之間的鏈接線。由於根結點只有出去的線,沒有進入的線。因此總線+1就是結點總數,n1+2n2+1=n0+n1+n2  n0=n2+1

d.具備n個結點數的徹底二叉樹的深度爲[log2N]+1([x]表示不大於x的最大整數)。

e.若是對一棵有n個結點的徹底二叉樹(其深度爲[log2N])的結點按層序編號(從第一層到[log2N]+1層,每層從左到右),對任一結點i(1≤i≤n)有:

1.若是i=1,則結點i是二叉樹的根,無雙親;若是i>1,則雙親爲[i/2].

2.若是2i>n,則結點i無左孩子(結點i爲葉子結點);不然其左孩子是結點2i.

3.若是2i+1>n,則結點i無右孩子;不然其右孩子是結點2i+1

咱們將在下一章講解二叉樹的存儲結構

相關文章
相關標籤/搜索