【數據結構】—— 10、平衡二叉樹之紅黑樹與2-3樹

紅黑樹的5個性質:

  • 1、每個節點或者是紅色的或者是黑色的。
  • 2、根節點是黑色的。
  • 3、每一個葉子節點(最後的空節點NIL)是黑色的。
  • 4、如果一個節點是紅色的,那麼他的孩子節點一定是黑色的。
  • 5、從任意一個節點到葉子節點,所經過的黑色節點數量相同。
一、2-3樹

a的左孩子值 < a,a右孩子的值 > a,在右圖中可以存放兩個元素b、c,該樹有三個孩子,左孩子的值 < b,b < 中間孩子的值 < c,右孩子的值 > c

  • 對於2-3樹來說,它是一個絕對平衡的樹。即從根節點到任意一個葉子節點,所經過的節點數量一定是相同的。
  • 樹在添加節點時,如果子樹爲空,則進行融合,如果融合之後是四節點,則分裂。

假設現在有個根節點42,現在要向42添加一個元素37,如果是二分搜索樹,則37應該添加到42的左子節點,但是2-3樹有一個很重要的性質:就是對於2-3樹來說添加節點絕對不會添加到一個空的位置。

因爲42的左子樹爲空,所以37只能添加到最後一個葉子節點上,而現在最後一個葉子節點是根節點42,所以37與42融合,成爲一個3-節點,此時只有一個節點,整個樹是絕對平衡的。

現在我們又添加一個12,但此時根節點的左子樹還是爲空,爲了保持絕對平衡,12先與根節點融合成爲4-節點

但由於2-3樹不能存在4-節點,所以此時的根節點可以分裂成一棵子樹,有三個2-節點組成的絕對平衡樹

如果我們融合的3-節點是葉子節點,父親節點爲2-節點的話

如果我們融合的3-節點是葉子節點,父親節點爲3-節點的話

二、2-3樹與紅黑樹的等價性

在紅黑樹中,所有的紅色節點都是向左傾斜的。
黑色爲普通節點,紅色爲特殊節點,紅色表示【紅色的b】與其父節點【黑色的c】在2-3樹是以3節點相融的

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