1. 程式人生 > >資料結構:2-3樹與紅黑樹

資料結構:2-3樹與紅黑樹

2-3樹之前沒接觸過,只是聽說過紅黑樹,知道是平衡樹的一種,在關注C++的STL裡的set和map底層實現原理時第一次知道的,查了一下紅黑樹的資料,看的一通雲裡霧罩、不明所以。正好最近一個演算法微信公眾號裡看了幾篇講資料結構的文章,先講了2-3樹,後講了紅黑樹,一下子就明白了。

原來紅黑樹是2-3樹德一種實現方式,2-3樹是平衡樹的一種概念和思路,目的是降低BST(平衡查詢樹)的插入後平衡化操作代價,但2-3樹直接實現起來比較複雜,需要處理不同的節點型別,相比AVL查詢樹,2-3樹多了一種節點型別,它有兩個value和3個子女指標,子女指標指向由兩個value分開的3個區間,然後定義一些列平衡化操作,使得在插入、刪除時效率相比AVL樹要高(只需修改和本節點相關的節點即可,而AVL要遞迴平衡化操作,在一些情況下可能會一直涉及到根節點)。

但2-3樹插入操作造成的多次比較、拆分等也比較複雜,平衡操作有時會降低效率,作為改進的紅黑樹效率較高而且實現難度降低了很多。

分享一下這兩篇文章,注意其程式碼實現是C#,沒有指標哦。

2-3樹

紅黑樹