【數據結構】關於樹,我們應該知道什麼

樹型結構是一類重要的非線性數據結構。其中以樹和二叉樹最爲常見。樹是以分支關係定義的層次結構。樹的結構定義是一個遞歸的定義。

 

關於樹的概念:

樹的 結點 包含一個數據元素及若干指向其子樹的分支。

結點擁有的子樹數量成爲結點的 

度爲 0 的結點稱爲 葉子 或者 終端結點

度不爲0的結點稱爲 非終端結點 或 分支結點,除根節點之外,分支結點也稱爲 內部結點

樹的 度 是樹內各節點的度的最大值。

樹的 深度 是樹中結點的最大層次,也稱爲樹的 高度

 

有序樹:如果將樹中結點的各節點的子樹看成從左至右是有次序的(即不能互換的),則稱該樹爲有序樹,否則是無序樹。

森林:由m(m>=0)顆互不相交的樹的集合。對樹中的每一個節點而言,其子樹的集合即爲森林(即一棵樹也是一個森林,它的子樹都是這個森林的樹)

 

 

二叉樹

二叉樹是另一種樹型結構,它的特點是 每一個節點至多有兩顆子樹(即二叉樹中不存在度大於2的結點),並且,二叉樹的子樹有左右之分(有序樹)。

二叉樹的性質:

性質1:在二叉樹中,第 i 層的結點個數最多爲 2^{i-1} 個結點(i>=1)。第 i 層的結點從 2^{i-1} 到 2^{i}-1 。 

性質2: 深度爲 k 的二叉樹至多有 2^{k}-1 個結點(k>=1)

性質3:對於任意一顆二叉樹T,如果其終端結點數爲 n_{0} ,度爲2的結點數爲 n_{2} ,則 n_{0} = n_{2} + 1 。

設 n1 爲二叉樹 T 中度爲 1 的結點數,所以二叉樹的結點的總個數爲:
     
     n = n0 + n1 + n2

再看二叉樹的分支數,有多少個分支就有多少個結點(不包括根節點),所以有:
   
    n = n1 + 2 * n2 + 1
得:
     n0 + n1 + n2 = n1 + 2 * n2 + 1
得: 
     n0 = n2 + 1

 

二叉樹的種類

二叉樹包括 完全二叉樹  滿二叉樹 平衡二叉樹  .....

滿二叉樹: 一顆深度爲 k 且有 2^{k}-1 個結點的二叉樹稱爲 滿二叉樹。這種樹的特點就是 每一層的結點數都是最大數。

完全二叉樹: 深度爲 k , 有 n 個結點的二叉樹,當且僅當 每一個結點都與深度爲 k 的完全滿二叉樹的編號從 1 至 n 一一對應時,稱爲 完全二叉樹。(滿二叉樹也是完全二叉樹)

性質4 : 具有 n 個結點的完全二叉樹的深度爲 \log_{2} n + 1

      2^{k-1} - 1 < n <= 2^{k} -1     或   2^{k-1} <= n < 2^{k}

由於  k-1 < \log_{2}n < k ,因爲 k 是整數,所以  k = \log_{2} n + 1  。

性質5: 完全二叉樹的 i 結點的 父節點 爲 i / 2 。 i 結點的左右節點爲 (2* i)  和 (2 * i) + 1 。

 

遍歷二叉樹:

先序遍歷: 根左右

中序遍歷: 左根右

後序遍歷: 左右根

 

 

 

AVL樹:平衡二叉樹   平衡因子

B樹:

B+樹:

紅黑樹:

赫夫曼樹:

 

 

 

 

 

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