數(shù)據(jù)結(jié)構(gòu)之理解 AVL Tree

樹的高度和深度

From CSDN 暴走抹茶MOUKOY

1.高度

對于高度的理解,我們不管他數(shù)據(jù)結(jié)構(gòu)什么什么知識冈绊,就拿樓房來說吆倦,假如一個人提問:樓房的高度有好高佳晶?我們會下意識的從底層開始往上數(shù),假如樓有6層截型,則我們會說趴荸,這個樓有6層樓那么高,則提問者就會大概知道樓有多高了宦焦。所以高度就是從下往上對比发钝,這是我們的習(xí)慣。而在樹中波闹,樹的高度也是從下往上數(shù)酝豪,如圖所示


  K節(jié)點(diǎn)在樹的底層,是一個葉子節(jié)點(diǎn)精堕,則一般定義為K的高度在最低為1孵淘,以此類推,O的高度也是為1锄码,P的節(jié)點(diǎn)也是為1夺英。M節(jié)點(diǎn)是葉子節(jié)點(diǎn)O的父節(jié)點(diǎn)晌涕,從下往上數(shù)滋捶,M節(jié)點(diǎn)高度為2。那么G節(jié)點(diǎn)的高度是多少呢余黎?從G-L的高度為2重窟,從G-M-O節(jié)點(diǎn)高度為3,到底G節(jié)點(diǎn)高度為多少呢惧财,正確答案是3巡扇,請看定義:
高度的定義為:從結(jié)點(diǎn)x向下到某個葉結(jié)點(diǎn)最長簡單路徑中邊的條數(shù)
  注意:對于是否是邊的條數(shù)這個不清楚,待我后來查證垮衷,這個主要是由于其初值是1還是0來確定的厅翔,一般都是以1開始

2.深度

理解了高度,則深度的理解就很容易了搀突,深度是從根節(jié)點(diǎn)往下刀闷,列如上圖中:B的深度為2。

3.總結(jié)

對于整棵樹來說仰迁,最深的葉結(jié)點(diǎn)的深度就是樹的深度甸昏;樹根的高度就是樹的高度。這樣樹的高度和深度是相等的徐许。
  對于樹中相同深度的每個結(jié)點(diǎn)來說施蜜,它們的高度不一定相同,這取決于每個結(jié)點(diǎn)下面的葉結(jié)點(diǎn)的深度雌隅。


AVL Tree

From CSDN PlusPlus1 / 董的博客

一翻默、概述

AVL樹是最先發(fā)明的自平衡二叉查找樹缸沃。AVL樹以其發(fā)明者前蘇聯(lián)學(xué)者 G.M. Adelson-Velsky 和 E.M. Landis 名字而命名,他們在1962年的論文《An algorithm for the organization of information》中發(fā)表了它修械。
AVL樹中和泌,一個非常重要的概念為平衡因子(Balance factor),對于任意節(jié)點(diǎn) x 祠肥,其平衡因子定義為該節(jié)點(diǎn)右子樹和左子樹高度差武氓,即 bf(x)=h(x-right)-h(x-left)
  帶有平衡因子1仇箱、0或 -1的節(jié)點(diǎn)被認(rèn)為是平衡的县恕。帶有平衡因子 -2或2的節(jié)點(diǎn)被認(rèn)為是不平衡的,并需要重新平衡這個樹剂桥。平衡因子可以直接存儲在每個節(jié)點(diǎn)中忠烛,或從可能存儲在節(jié)點(diǎn)中的子樹高度計(jì)算出來。

二权逗、基本術(shù)語

有四種種情況可能導(dǎo)致二叉查找樹不平衡美尸,分別為:
(1)LL:插入一個新節(jié)點(diǎn)到根節(jié)點(diǎn)的左子樹(Left)的左子樹(Left),導(dǎo)致根節(jié)點(diǎn)的平衡因子由1變?yōu)?
(2)RR:插入一個新節(jié)點(diǎn)到根節(jié)點(diǎn)的右子樹(Right)的右子樹(Right)斟薇,導(dǎo)致根節(jié)點(diǎn)的平衡因子由-1變?yōu)?2
(3)LR:插入一個新節(jié)點(diǎn)到根節(jié)點(diǎn)的左子樹(Left)的右子樹(Right)师坎,導(dǎo)致根節(jié)點(diǎn)的平衡因子由1變?yōu)?
(4)RL:插入一個新節(jié)點(diǎn)到根節(jié)點(diǎn)的右子樹(Right)的左子樹(Left),導(dǎo)致根節(jié)點(diǎn)的平衡因子由-1變?yōu)?2
針對四種種情況可能導(dǎo)致的不平衡堪滨,可以通過旋轉(zhuǎn)使之變平衡胯陋。有兩種基本的旋轉(zhuǎn):
(1)左旋轉(zhuǎn):將根節(jié)點(diǎn)旋轉(zhuǎn)到(根節(jié)點(diǎn)的)右孩子的左孩子位置
(2)右旋轉(zhuǎn):將根節(jié)點(diǎn)旋轉(zhuǎn)到(根節(jié)點(diǎn)的)左孩子的右孩子位置

三、AVL樹的旋轉(zhuǎn)操作

AVL樹的基本操作是旋轉(zhuǎn)袱箱,有四種旋轉(zhuǎn)方式遏乔,分別為:左旋轉(zhuǎn),右旋轉(zhuǎn)发笔,左右旋轉(zhuǎn)(先左后右)盟萨,右左旋轉(zhuǎn)(先右后左),實(shí)際上了讨,這四種旋轉(zhuǎn)操作兩兩對稱捻激,因而也可以說成兩類旋轉(zhuǎn)操作。

3.1 LL

下圖所示為LL構(gòu)型量蕊,在B節(jié)點(diǎn)的左子樹上插入節(jié)點(diǎn)導(dǎo)致A節(jié)點(diǎn)失衡铺罢,調(diào)整過程為:以B節(jié)點(diǎn)為軸心,A節(jié)點(diǎn)順時(shí)針旋轉(zhuǎn)至B的右子樹残炮,A的右子樹用B的右子樹代替韭赘。通過右旋操作,返回以B為Root的平衡子樹势就。


3.2 RR

RR情況需要左旋解決泉瞻,如下圖所示:


3.3 LR

下圖所示為LR構(gòu)型脉漏,在B節(jié)點(diǎn)的右子樹上插入新節(jié)點(diǎn)導(dǎo)致A節(jié)點(diǎn)失衡,調(diào)整過程分兩個步驟:首先以C為軸心袖牙,B繞C逆時(shí)針旋轉(zhuǎn)侧巨,生成的子樹作為A的左子樹;這樣就變化成了LL型鞭达,然后用上圖所示的方法調(diào)整即可司忱。通過先左旋后右旋,返回以C為Root的平衡子樹畴蹭。


3.4 RL

RL情況需要右左旋解決(先B右旋轉(zhuǎn)坦仍,后A左旋轉(zhuǎn)),如下圖所示:


四叨襟、AVL數(shù)的插入和刪除操作

(1) 插入操作:實(shí)際上就是在不同情況下采用不同的旋轉(zhuǎn)方式調(diào)整整棵樹,向AVL樹中插入節(jié)點(diǎn)后繁扎,要判斷是否引起失衡,如果失衡則需要進(jìn)一步確定構(gòu)型糊闽,選擇合適的基本旋轉(zhuǎn)操作來調(diào)整梳玫。
(2) 刪除操作:首先定位要刪除的節(jié)點(diǎn),然后用該節(jié)點(diǎn)的右孩子的最左孩子替換該節(jié)點(diǎn)右犹,并重新調(diào)整以該節(jié)點(diǎn)為根的子樹為AVL樹提澎,具體調(diào)整方法跟插入數(shù)據(jù)類似。刪除操作對應(yīng)為插入操作的逆向操作傀履,調(diào)整平衡的時(shí)候也需要確定被刪除節(jié)點(diǎn)的分支構(gòu)型來選擇合適的旋轉(zhuǎn)方法虱朵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末莉炉,一起剝皮案震驚了整個濱河市钓账,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌絮宁,老刑警劉巖梆暮,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绍昂,居然都是意外死亡啦粹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門窘游,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唠椭,“玉大人,你說我怎么就攤上這事忍饰√吧” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵艾蓝,是天一觀的道長力崇。 經(jīng)常有香客問我斗塘,道長,這世上最難降的妖魔是什么亮靴? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任馍盟,我火速辦了婚禮,結(jié)果婚禮上茧吊,老公的妹妹穿的比我還像新娘贞岭。我一直安慰自己,他們只是感情好搓侄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布曹步。 她就那樣靜靜地躺著,像睡著了一般休讳。 火紅的嫁衣襯著肌膚如雪讲婚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天俊柔,我揣著相機(jī)與錄音筹麸,去河邊找鬼。 笑死雏婶,一個胖子當(dāng)著我的面吹牛物赶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播留晚,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼酵紫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了错维?” 一聲冷哼從身側(cè)響起奖地,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赋焕,沒想到半個月后参歹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隆判,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年犬庇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侨嘀。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡臭挽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咬腕,到底是詐尸還是另有隱情欢峰,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站赤赊,受9級特大地震影響闯狱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抛计,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一哄孤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吹截,春花似錦瘦陈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至懦铺,卻和暖如春捉貌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冬念。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工趁窃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人急前。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓醒陆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親裆针。 傳聞我的和親對象是個殘疾皇子刨摩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容