數據結構----樹與二叉樹

結點的深度是從根結點開始自頂向下逐層累加的。

結點的高度是從葉節點開始自底向上逐層累加的。

樹的高度(又稱深度)是樹中結點的最大層數。

 

樹的一些重要性質:

 樹中結點數等於所有結點的度數加1

2 爲m的樹中第i層至多有m^{i-1}個結點

3 高度爲h的m叉樹至多有(m^{h}-1)/(m-1)個結點

4 具有n個結點的m叉樹的最小高度爲logM(n(m-1))+1

 

二叉樹與度爲2的有序樹的區別:

1 度爲2的樹至少有3個結點,而二叉樹可以爲空

2度爲2的樹有序樹的孩子結點的左右次序是相對於另一孩子而言,而二叉樹是確定的

 

幾個特殊的二叉樹

1 滿二叉樹:高度爲h,含有2^{h}-1個結點的二叉樹

2 完全二叉樹:高度爲h,有n個結點的二叉樹,每一個結點序號與滿二叉樹一一對應時,稱之爲完全二叉樹(不一定滿)

特點:

葉子結點只可能在層次最大的兩層出現。對於最大層次中的葉子結點,都依次排列在該層的最左邊位置上

2 如果有度爲1的結點,只可能有一個,且該結點只有左孩子而無右孩子(重要特徵)

3按層序排序後,一旦出現某結點(其編號爲i)爲葉子結點或只有左孩子,則編號大於i的結點均爲葉子結點

4如n爲奇數,則每個分支都有左右子女;如n爲偶數,則編號最大的分支結點只有左子女

 

3二叉排序樹:左子樹上所有結點的關鍵字均小於根節點關鍵字,右子樹所有關鍵字均大於根節點關鍵字

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

 

二叉樹的性質:(非常重要)

   非空二叉樹的葉子結點度數等於度爲2的結點數加1,N0=N2+1

 

鏈式存儲結構描述:

typedef struct btnode{
        elemtype data;
        struct btnode *lchild,*rchild;
    
    
}btnode,*btree;

含有n個結點的二叉鏈表中含有n+1個空鏈域

 

樹和二叉樹的轉換規則:

每個結點左指針指向它的第一個孩子結點,右指針指向它在樹中的相鄰兄弟結點,可表示爲“左孩子右兄弟”

由於根節點沒有兄弟,所以由樹轉換而得的二叉樹沒有右子樹

 

 

 

 

 

 

 

 

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