紅黑樹常見面試問題整理

參考文獻

1.紅黑樹知識點結構圖
2.紅黑樹漫畫初步解讀
3.筆試面試常考數據結構紅黑樹性質總結
4.教你初步瞭解紅黑樹(很完整的博客!!)


在這裏插入圖片描述

一、定義

紅黑樹是一種特定類型的二叉樹,是在計算機科學中用到的一種數據結構,典型的用途是實現關聯數組。它是在1972年由RudolfBayer發明的,他稱之爲"對稱二叉B樹",它現代的名字是在LeoJ.Guibas和RobertSedgewick於1978年寫的一篇論文中獲得的。它是複雜的,但它的操作有着良好的最壞情況運行時間,並且在實踐中是高效的,它可以在O(logn)時間內做查找,插入和刪除,這裏的n是樹中元素的數目。紅黑樹是一種自平衡二叉查找樹,是在計算機科學中用到的一種數據結構,典型的用途是實現關聯數組

二、性質

紅黑樹是每個節點都帶有顏色屬性的二叉查找樹,顏色或紅色或黑色。在二叉查找樹強制一般要求以外,對於任何有效的紅黑樹我們增加了如下的額外要求:
【1】性質1. 節點是紅色或黑色。
【2】性質2. 根節點是黑色。
【3】性質3 每個葉節點是黑色的。
【4】性質4 每個紅色節點的兩個子節點都是黑色。(從每個葉子到根的所有路徑上不能有兩個連續的紅色節點)
【5】性質5. 從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。

三、用途和好處

紅黑樹和AVL樹一樣都對插入時間、刪除時間和查找時間提供了最好可能的最壞情況擔保。這不只是使它們在時間敏感的應用如即時應用(real time application)中有價值,而且使它們有在提供最壞情況擔保的其他數據結構中作爲建造板塊的價值;例如,在計算幾何中使用的很多數據結構都可以基於紅黑樹。

紅黑樹在函數式編程中也特別有用,在這裏它們是最常用的持久數據結構之一,它們用來構造關聯數組和集合,在突變之後它們能保持爲以前的版本。除了O(log n)的時間之外,紅黑樹的持久版本對每次插入或刪除需要O(log n)的空間。

紅黑樹是 2-3-4樹的一種等同。換句話說,對於每個 2-3-4 樹,都存在至少一個數據元素是同樣次序的紅黑樹。在 2-3-4 樹上的插入和刪除操作也等同於在紅黑樹中顏色翻轉和旋轉。這使得 2-3-4 樹成爲理解紅黑樹背後的邏輯的重要工具,這也是很多介紹算法的教科書在紅黑樹之前介紹 2-3-4 樹的原因,儘管 2-3-4 樹在實踐中不經常使用。


四、紅黑樹的數據結構

enum Color  
{  
    RED = 0,  
    BLACK = 1  
};  

struct RBTreeNode  
{ 
    struct RBTreeNode*left, *right, *parent;  
    int key;  
    int data;  
    Color color;  
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章