1. 程式人生 > 其它 >一些樹的資料結構

一些樹的資料結構

(原創)

本文討論一些樹的資料結構:

二叉查詢樹binary search tree:根節點大於等於左樹,小於等於右樹。

k-ary 樹:孩子至多k個

AVL樹:對每一個節點,平衡因子(右樹高度-左樹高度)為0,1,或-1

B樹:二叉查詢樹的拓展,一個節點可多於2個孩子,由keys分割多個子樹,並符合大小關係,如兩個key的節點 k1,k2,孩子1小於k1,孩子2介於k1和k2,孩子3大於k2。例子:2-3B樹(簡稱2-3樹),他有2個孩子(根一個數據),或3個孩子(根兩個資料)。

2-3-4樹:2個或3個或4個孩子

B+樹:類B樹,但除底層葉子外的節點都只含key僅做索引用,並且這些葉子組成一個連結串列。

紅黑樹

紅黑樹是一種自平衡二叉查詢樹(self-balancing binary search tree),額外還有性質:

(1)每個節點紅或黑

(2)root是黑,葉子NIL是黑

(3)紅節點的孩子皆黑

(4)節點到它的葉子的路徑包含同樣數目的黑節點

插入節點時,有三種情況需要調整(這是在左樹情況下,右樹相應映象操作)

case1:父叔節點都紅,父叔變紅,祖父變黑

case2:父紅叔黑,且自身為右孩子,左旋一下到case3

case3:父紅叔黑,且自身為左孩子,右旋一下,且之後父和兄弟變色