數據結構和算法(Golang實現)(30)查找算法-2-3-4樹和普通紅黑樹

2-3-4樹和普通紅黑樹

某些教程不區分普通紅黑樹和左傾紅黑樹的區別,直接將左傾紅黑樹拿來教學,而且稱其爲紅黑樹,由於左傾紅黑樹與普通的紅黑樹相比,實現起來較爲簡單,容易教學。在這裏,咱們區分開左傾紅黑樹和普通紅黑樹。算法

紅黑樹是一種近似平衡的二叉查找樹,從2-3樹或2-3-4樹衍生而來。經過對二叉樹節點進行染色,染色爲紅或黑節點,來模仿2-3樹或2-3-4樹的3節點和4節點,從而讓樹的高度減少。2-3-4樹對照實現的紅黑樹是普通的紅黑樹,而2-3樹對照實現的紅黑樹是一種變種,稱爲左傾紅黑樹,其更容易實現。segmentfault

使用平衡樹數據結構,能夠提升查找元素的速度,咱們在本章介紹2-3-4樹,再用二叉樹形式來實現2-3-4樹,也就是普通的紅黑樹。數組

3、應用場景

紅黑樹能夠用來做爲字典Map的基礎數據結構,能夠存儲鍵值對,而後經過一個鍵,能夠快速找到鍵對應的值,相比哈希表查找,不須要佔用額外的空間。咱們以上的代碼實現只有value,沒有key:value,能夠簡單改造實現字典。數據結構

Java語言基礎類庫中的HashMapTreeSetTreeMap都有使用到,C++語言的STL標準模板庫中,mapset類也有使用到。不少中間件也有使用到,好比Nginx,但Golang語言標準庫並無它。併發

系列文章入口

我是陳星星,歡迎閱讀我親自寫的 數據結構和算法(Golang實現),文章首發於 閱讀更友好的GitBook數據結構和算法

相關文章
相關標籤/搜索