红黑树和B+树
(一)紅黑樹
紅黑樹是一種自平衡二叉查找樹,也被稱為"對稱二叉B樹",它可以在O(logn)時間內(nèi)利用 O(logn)的空間來完成查找、插入、刪除操作。紅黑樹的讀操作與普通二叉查找樹相同,而插入和刪除操作可能會破壞紅黑樹的規(guī)則,需要進(jìn)行恢復(fù)操作。恢復(fù)紅黑樹的性質(zhì)需要少量的顏色變更(實(shí)際是非常快速的)和不超過三次樹旋轉(zhuǎn)(對于插入操作是兩次),雖然插入和刪除很復(fù)雜,但操作時間仍可以保持為O(logn)。
紅黑樹的規(guī)則:
1.節(jié)點(diǎn)是紅色或和黑色
2.根節(jié)點(diǎn)是黑色
3.所有的葉子節(jié)點(diǎn)都是黑色(葉子節(jié)點(diǎn)是NIL節(jié)點(diǎn),實(shí)際應(yīng)用時可以有數(shù)據(jù))
4.每個紅色節(jié)點(diǎn)必須有兩個黑色的子節(jié)點(diǎn),從葉子節(jié)點(diǎn)到根節(jié)點(diǎn)不能有兩個連續(xù)的紅色節(jié)點(diǎn)。
5.從任意節(jié)點(diǎn)到每個葉子節(jié)點(diǎn)的簡單路徑都包含相同數(shù)量的黑色節(jié)點(diǎn)。
(二)B+樹
(1)B+樹常用于數(shù)據(jù)庫和文件系統(tǒng)中,B+樹能夠保持?jǐn)?shù)據(jù)穩(wěn)定有序,其插入與修改擁有較穩(wěn)定的對數(shù)時間復(fù)雜度。B+ 樹自底向上插入,這與二叉樹恰好相反。
(2)B+樹與B樹的主要區(qū)別:1.B+樹中只有葉子節(jié)點(diǎn)會帶有指向記錄的指針,而B樹所有節(jié)點(diǎn)都有指針,在內(nèi)部節(jié)點(diǎn)出現(xiàn)的索引項(xiàng)不會再出現(xiàn)在葉子節(jié)點(diǎn)中。(B+樹的所有全量數(shù)據(jù)都在葉子節(jié)點(diǎn),而B樹每個節(jié)點(diǎn)都是全量數(shù)據(jù))2.B+樹中所有葉子節(jié)點(diǎn)都是通過指針連接在一起,而B樹不會。
(二)兩種樹的區(qū)別
紅黑樹結(jié)構(gòu)的數(shù)據(jù)常常存在于主存中,主要用于快速查找。樹的每個節(jié)點(diǎn)存儲的數(shù)據(jù)量比較小,cpu通過與主存少量的交互就能獲取樹的全部數(shù)據(jù),并快速的查找到所需數(shù)據(jù)。而B+樹形式的數(shù)據(jù)常常存在于SSD或磁盤中,由于樹的深度比較小(一般3~4),能夠減少cpu于磁盤間的交互時間。
總結(jié)
- 上一篇: 分布式 ID的 9 种生成方式
- 下一篇: 什么是数据的完整性约束