關於各種樹的一些想法記錄

2-3樹和紅黑樹相比較BST的優勢在哪裏

生長方式

  • 2-3樹和紅黑樹的生長方式是先變胖在增高,增高時根向上生長
  • BST的生長方向是增高再變胖,增高時葉子向下生長

高度變化

樹生長方式的不同決定了樹高度的變化方式。
2-3樹和紅黑樹先變胖,即指優先改變單個節點的性質,例如像一個2-節點插入新值時,直接將其變爲一個3-節點,這樣就不會破壞樹的平衡性。當然節點不能無限變胖,即設定好單個節點的容納能力是有限的,2-3樹中即單個節點最多容納兩個值,類似的還有2-3-4樹。當某次插入新值後,是某個節點超過了其容納能力後,這時就節點就會破裂,破裂後分離出的某個值向上輸送(即根向上生長),如此遞歸調整後,會有兩種結果,其中之一是沒有波及到根節點,此時樹的高度不變;另一種是波及到根節點,樹的高度加一,此時樹中所有節點的高度加一。不管哪種情況,樹的平衡性都得到了完美的保持。
BST的生長方式是先變高,即直接插入某個值,這樣不停地新增葉子節點的方式,必然會破壞樹的平衡性。因此爲了保持樹的平衡性,每插入一個值後,如果破壞了樹的平衡性就要做一次調整。這種調整的代價有時候會很大。因爲每插入一個是樹高增加的葉子節點都時需要判斷判斷樹的平衡性有沒有遭到破壞。

小結

到底哪一種生長方式“更自然”,BST的生長方式看起來更像自然界中樹的生長方式。但是對於搜索來說,我們需要的是一棵最好能保持完美平衡的樹,即“所有樹枝的長度都一樣”。自然界並不存在這樣的樹。從我們的要求來說,2-3樹和紅黑樹的生長方式才更自然—–生長時最小限度的破壞樹的平衡性。

  • 2-3樹優先保持樹的平衡性,這是通過放寬節點性質約束達到的(可以理解爲以破壞二叉樹節點性質爲代價)
  • BST樹優先保持二叉樹節點的性質,把平衡性的保持放在第二位,當不得不調整平衡性時再做調整。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章