若左子樹不為空,則左子樹上所有節點的值都小於根節點的值
若右子樹不為空,則右子樹上所有節點的值都大於根節點的值
且左右子樹都為二叉搜尋樹
查詢:必須從根節點開始查詢
如果值比根節點大則查詢右子樹,否則左子樹,直到找到節點
插入:與查詢類似
逐個節點對比,直到找到滿足條件的null,就插入到相應位置
查詢最大和最小值
一直往左遍歷,直到null,那就是最小值,最大值就是往右遍歷。
中序遍歷也就是投影,最左邊的值最小,最右邊的最大
二叉搜尋樹最極端的情況會退化成煉表,查詢時效率很低,因此產生了紅黑樹。
平衡二叉樹其實也可以解決效率低的問題,但是他要求每個節點的左右子樹的高度差不大於1,因此在大量資料插入或者刪除時需要經常調整,效率也不高。
變色:紅變黑,黑變紅
左旋:以某個節點作為支點,其右子節點變成父節點,右節點的左子樹練到支點的左節點上
3. 右旋:過程相反
查詢:與搜尋二叉樹相同
插入:插入節點必須為紅色
父節點為黑色時,當插入為黑色時,會破壞平衡性(性質5),從插入的位置往上數的黑色節點數總是會多一若插入為紅色就不會出現不平衡的情況。
紅黑樹核心原理
紅黑樹是一種近似平衡的二叉查詢樹,它能夠確保任何乙個節點的左右子樹的高度差不會超過二者中較低那個的一陪。具體來說,紅黑樹是滿足如下條件的二叉查詢樹 binary search tree 每個節點要麼是紅色,要麼是黑色。根節點必須是黑色 紅色節點不能連續 也即是,紅色節點的孩子和父親都不能是紅色 對於...
紅黑樹的原理,雙紅缺陷,雙黑缺陷
引入紅黑樹的目的是為了實現在維護bst平衡的同時,盡量控制拓撲結構調整的次數,即最好做到每次動態操作後只有o 1 次的拓撲調整。紅黑樹的規則 1 樹根必須是黑色 2 外部節點必須為黑色 3 其餘節點 紅節點只能有黑孩子,即不能出現相鄰的父子兩代都為紅色 4 外部節點到根 所有外部節點的黑深度相同。在...
紅黑樹的原理 關於紅黑樹原理的一些介紹
紅黑樹 red black tree 是一種重要的資料結構,也經常會用到,c 的map就是使用紅黑樹來實現的。在程式設計師找工作的面試中,紅黑樹也是經常被問到的乙個知識點,我也是當時從找工作的時候嘗試去理解紅黑樹的一些結構和原理,但是由於找工作時間比較緊張,而且要了解的知識點比較多,所以當時對它也沒...