iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
0
自我挑戰組

資料結構大便當系列 第 26

[Day 26] Red–Black Tree IIII

紅黑樹(Red–Black Tree)

延伸閱讀:http://www.eternallyconfuzzled.com/tuts/datastructures/jsw_tut_rbtree.aspx

不過上面這個連結掛了QQ

主要的重點是:在紅黑樹中,自下而上的删除是否比自下而上删除更快、空間效率更高?

由上而下的刪除

刪除一個節點後,由紅色節點往下去主動平衡樹,並保證被刪除的節點必為紅色
由於能保證被刪除的節點是紅色的,所以不必擔心刪除後須重新平衡樹
避免了在操作過程中多次遍歷路徑中的同一節點
因此每次操作只須歷遍一次樹
可以通過很少的重新平衡操作使以後插入某些內容變得更容易,也不需要節點上的父指針

由下而上的刪除

因為涉及到需要先進行 Binary Search 找出要刪除的節點,並在葉中進行交換
接著藉由紅黑樹的屬性並向上調整違反紅黑樹屬性的節點
需要父指針,並在插入和刪除後決定是否需要重新平衡
自下而上的方法每次操作必須遍歷兩次樹

參考:

  1. https://github.com/GENIVI/persistence-client-library/blob/master/src/rbtree.h
  2. https://stackoverflow.com/questions/364616/in-red-black-trees-is-top-down-deletion-faster-and-more-space-efficient-than-bottom-up-deletion

上一篇
[Day 25] Red–Black Tree III
下一篇
[Day 27] B-tree 初探
系列文
資料結構大便當30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言