數(shù)據(jù)結構-樹/平衡二叉樹/二叉查找樹/紅黑樹

2019年7月26日
前言:樹是一種數(shù)據(jù)結構的組織方式谍咆,不同的數(shù)據(jù)組織方式在數(shù)據(jù)的增刪改查方面性能上有差異堕伪。例如ArrayList增刪慢挤渔,其時間復雜度O(n),修改查詢快先慷,時間復雜度為O(1)饮笛;LinkedList正好與ArrayList相反;而紅黑樹在增刪改查的時間復雜度均為O(log(n))论熙。接下來福青,是我對樹的簡單總結和理解。
全文缺少配圖脓诡,有時間補上

概念理解

樹:從直接前繼和直接后繼個數(shù)角度无午,可以這樣定義, 0到1個直接前繼祝谚,0到n個直接后繼宪迟,其中n>=2。
節(jié)點:樹就是由有限節(jié)點組成的一個具有層次關系的集合交惯,數(shù)據(jù)就存在這些節(jié)點中次泽。
根節(jié)點:最頂上的一個節(jié)點穿仪,沒有父節(jié)點。
子節(jié)點:兩個相連節(jié)點的關系意荤。
葉子節(jié)點:某個節(jié)點下方?jīng)]有任何分叉啊片。
節(jié)點的高度:從某個節(jié)點出發(fā),到葉子節(jié)點為止玖像,最長簡單路徑上邊的條數(shù)紫谷,稱為該節(jié)點高度。
節(jié)點的深度:從根節(jié)點出發(fā)捐寥,到某節(jié)點邊的條數(shù)笤昨,稱為該節(jié)點的深度。

二叉樹:至多有兩個子節(jié)點的樹握恳,平衡二叉樹咬腋、二叉查找樹、紅黑樹都是一種特殊的二叉樹睡互。
平衡二叉樹性質(zhì):

(1)樹的左右高度查不能超過1;
(2)任何往下遞歸的左子樹和右子樹陵像,必須符合第一條性質(zhì)就珠;
(3)沒有任何節(jié)點的空樹或只有根節(jié)點的樹也是平衡二叉樹。

二叉查找樹性質(zhì):

(1)對于任意節(jié)點來說醒颖,它的左子樹上所有節(jié)點的值都小于他妻怎,而他的右子樹上所有節(jié)點都大于他。
遍歷所有節(jié)點的常用方式有三種:前序遍歷泞歉、中序遍歷逼侦、后序遍歷。
(1)在任何遞歸子樹中腰耙,左節(jié)點一定在右節(jié)點之前遍歷榛丢。
(2)前序、中序挺庞、后序晰赞,僅指根節(jié)點在遍歷時的為止順序。
前序遍歷順序:根節(jié)點选侨、左節(jié)點掖鱼、右節(jié)點;
中序遍歷順序:左節(jié)點援制、根節(jié)點戏挡、右節(jié)點;
后序遍歷順序:做節(jié)點晨仑、右節(jié)點褐墅、根節(jié)點拆檬;
二叉查找樹由于數(shù)據(jù)不斷增加或刪除容易失衡,因此為了保持二叉樹重要的平衡性掌栅,有很多算法實現(xiàn)秩仆,比如AVL樹、紅黑樹等

AVL樹:

AVL樹是一種平衡二叉查找樹猾封,在增加或刪除節(jié)點后通過樹形旋轉(zhuǎn)重新達到平衡澄耍。
右旋,以某個節(jié)點為中心晌缘,將它沉入當前右子節(jié)點的位置齐莲,而讓當前的左子節(jié)點作為新樹的根節(jié)點,也稱為順時針旋轉(zhuǎn)磷箕。
左旋选酗,以某個節(jié)點為中心,將它沉入當前左子節(jié)點的位置岳枷,而讓當前右子節(jié)點作為新樹的跟節(jié)點芒填,也稱為逆時針旋轉(zhuǎn)。

紅黑樹:一種特殊的二叉查找樹

與AVL樹相比空繁,紅黑樹并不追求所有遞歸子樹的高度差不超過1殿衰,而是保證從根節(jié)點到葉子節(jié)點的最長路徑不超過最短路徑的2倍。
相比二叉查找樹盛泡,有5個約束條件:
(1)節(jié)點只能是紅色或黑色闷祥。
(2)根節(jié)點必須是黑色。
(3)所有NIL節(jié)點都是黑色的傲诵。NIL凯砍,即葉子節(jié)點下掛的兩個虛節(jié)點。
(4)一條路徑上不能出現(xiàn)相鄰的兩個紅色節(jié)點拴竹。
(5)在任何遞歸子樹內(nèi)悟衩,根節(jié)點到葉子節(jié)點所有路徑上包含相同數(shù)目的黑色節(jié)點。

總結即是“有紅必有黑栓拜,紅紅不相連”局待,上述5個約束條件保證了:
(1)紅黑樹的新增、刪除菱属、查找的最壞時間復雜度均為O(logn);
(2)如果一個樹的左子節(jié)點或者右子節(jié)點不存在钳榨,則均認定為黑色;
(3)紅黑樹的任何旋轉(zhuǎn)在3次之內(nèi)均可完成纽门。(這個是怎么計算出來的薛耻??赏陵?)

紅黑樹與AVL樹的比較

這里還需更加詳細分析兩者的區(qū)別
面對頻繁的插入和刪除饼齿,紅黑樹更為合適饲漾;
面對低頻修改、大量查詢缕溉,AVL樹更合適考传。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市证鸥,隨后出現(xiàn)的幾起案子僚楞,更是在濱河造成了極大的恐慌,老刑警劉巖枉层,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泉褐,死亡現(xiàn)場離奇詭異,居然都是意外死亡鸟蜡,警方通過查閱死者的電腦和手機膜赃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揉忘,“玉大人跳座,你說我怎么就攤上這事∑” “怎么了疲眷?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長乳蓄。 經(jīng)常有香客問我,道長夕膀,這世上最難降的妖魔是什么虚倒? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮产舞,結果婚禮上魂奥,老公的妹妹穿的比我還像新娘。我一直安慰自己易猫,他們只是感情好耻煤,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著准颓,像睡著了一般哈蝇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上攘已,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天炮赦,我揣著相機與錄音,去河邊找鬼样勃。 笑死吠勘,一個胖子當著我的面吹牛性芬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剧防,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼植锉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了峭拘?” 一聲冷哼從身側(cè)響起俊庇,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棚唆,沒想到半個月后暇赤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡宵凌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年娃圆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片近哟。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡胎源,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瓜喇,到底是詐尸還是另有隱情挺益,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布乘寒,位于F島的核電站望众,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伞辛。R本人自食惡果不足惜烂翰,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚤氏。 院中可真熱鬧甘耿,春花似錦、人聲如沸竿滨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽于游。三九已至毁葱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贰剥,已是汗流浹背头谜。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鸠澈,地道東北人柱告。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓截驮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親际度。 傳聞我的和親對象是個殘疾皇子葵袭,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354