C語言:平衡二叉樹匯總

定義:

平衡二叉樹(Balanced Binary Tree),這個性質(zhì)辨萍,在數(shù)據(jù)結構的發(fā)展中出現(xiàn)了幾種平衡二叉樹近忙。

均具有以下性質(zhì):

它是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1骄酗,并且左右兩個子樹都是一棵平衡二叉樹。

構造與調(diào)整方法 平衡二叉樹的常用算法有紅黑樹邦邦、AVL安吁、Treap等。

最小二叉平衡樹的節(jié)點的公式如下 F(n)=F(n-1)+F(n-2)+1 這個類似于一個遞歸的數(shù)列燃辖,

可以參考Fibonacci數(shù)列鬼店,1是根節(jié)點,F(xiàn)(n-1)是左子樹的節(jié)點數(shù)量郭赐,

F(n-2)是右子樹的節(jié)點數(shù)量

一般的二叉搜索樹(Binary Search Tree)薪韩,其期望高度(即為一棵平衡樹時)為log2n,

其各操作的時間復雜度(O(log2n))同時也由此而決定捌锭。

但是俘陷,在某些極端的情況下(如在插入的序列是有序的時),二叉搜索樹將退化成近似鏈或鏈观谦,

此時拉盾,其操作的時間復雜度將退化成線性的,即O(n)豁状。

我們可以通過隨機的建立二叉搜索樹來盡量的避免這種情況捉偏,但是在進行了多次的操作之后倒得,

由于在刪除時,

我們總是選擇將待刪除節(jié)點的后繼代替它本身夭禽,這樣就會造成總是右邊的節(jié)點數(shù)目減少霞掺,

以至于樹向左偏沉。這同時也會造成樹的平衡性受到破壞讹躯,

提高它的操作的時間復雜的菩彬。

分類:

目前幾種被使用的較為廣泛的是:

紅黑樹

紅黑樹是一種自平衡二叉查找樹,是在計算機科學中用到的一種數(shù)據(jù)結構潮梯,典型的用途是實現(xiàn)關聯(lián)數(shù)組骗灶。

它是在1972年由Rudolf Bayer發(fā)明的,他稱之為"對稱二叉B樹"秉馏,它現(xiàn)代的名字是在 Leo J. Guibas 和

Robert Sedgewick 于1978年寫的一篇論文中獲得的耙旦。它是復雜的,但它的操作有著良好的最壞情況運行時間萝究,

并且在實踐中是高效的: 它可以在O(log n)時間內(nèi)做查找免都,插入和刪除,這里的n是樹中元素的數(shù)目帆竹。

AVL樹

AVL是最先發(fā)明的自平衡二叉查找樹算法琴昆。在AVL中任何節(jié)點的兩個兒子子樹的高度最大差別為一,

所以它也被稱為高度平衡樹馆揉,n個結點的AVL樹最大深度約1.44log2n。查找抖拦、插入和刪除在平均和

最壞情況下都是O(log n)升酣。增加和刪除可能需要通過一次或多次樹旋轉(zhuǎn)來重新平衡這個樹。

Treap

Treap是一棵二叉排序樹态罪,它的左子樹和右子樹分別是一個Treap噩茄,和一般的二叉排序樹不同的是,

Treap紀錄一個額外的數(shù)據(jù)复颈,就是優(yōu)先級绩聘。Treap在以關鍵碼構成二叉排序樹的同時,還滿足堆

的性質(zhì)(在這里我們假設節(jié)點的優(yōu)先級大于該節(jié)點的孩子的優(yōu)先級)耗啦。但是這里要注意的是Treap和

二叉堆有一點不同凿菩,就是二叉堆必須是完全二叉樹,而Treap并不一定是帜讲。

伸展樹

伸展樹(Splay Tree)是一種二叉排序樹衅谷,它能在O(log n)內(nèi)完成插入、查找和刪除操作似将。

它由Daniel Sleator和Robert Tarjan創(chuàng)造获黔。它的優(yōu)勢在于不需要記錄用于平衡樹的冗余信息蚀苛。

伸展樹上的一般操作都基于伸展操作。

SBT

Size Balanced Tree(簡稱SBT)是一自平衡二叉查找樹玷氏,是在計算機科學中用到的一種數(shù)據(jù)結構堵未。

它是由中國廣東中山紀念中學的陳啟峰發(fā)明的。陳啟峰于2006年底完成論文《Size Balanced Tree》盏触,

并在2007年的全國青少年信息學奧林匹克競賽冬令營中發(fā)表渗蟹。由于SBT的拼寫很容易找到中文諧音,

它常被中國的信息學競賽選手ACM選手們戲稱為“傻B樹”耻陕、“Super BT”等拙徽。相比紅黑樹、

AVL樹等自平衡二叉查找樹诗宣,SBT更易于實現(xiàn)膘怕。據(jù)陳啟峰在論文中稱,SBT是“目前為止速度最快的

高級二叉搜索樹”召庞。SBT能在O(log n)的時間內(nèi)完成所有二叉搜索樹(BST)的相關操作岛心,

而與普通二叉搜索樹相比,SBT僅僅加入了簡潔的核心操作Maintain篮灼。由于SBT賴以保持平衡的是size域

而不是其他“無用”的域忘古,它可以很方便地實現(xiàn)動態(tài)順序統(tǒng)計中的select和rank操作。

小編推薦一個學C語言/C++的學習裙【 六二六诅诱,八七一髓堪,九一六? 】邀請碼凌云,無論你是大牛還是小白娘荡,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學習干旁!裙內(nèi)有開發(fā)工具,很多干貨和技術資料分享炮沐!

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末争群,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子大年,更是在濱河造成了極大的恐慌换薄,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翔试,死亡現(xiàn)場離奇詭異轻要,居然都是意外死亡,警方通過查閱死者的電腦和手機垦缅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門伦腐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人失都,你說我怎么就攤上這事柏蘑⌒叶常” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵咳焚,是天一觀的道長洽损。 經(jīng)常有香客問我,道長革半,這世上最難降的妖魔是什么碑定? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮又官,結果婚禮上延刘,老公的妹妹穿的比我還像新娘。我一直安慰自己六敬,他們只是感情好碘赖,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著外构,像睡著了一般普泡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上审编,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天撼班,我揣著相機與錄音,去河邊找鬼垒酬。 笑死砰嘁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的勘究。 我是一名探鬼主播般码,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼乱顾!你這毒婦竟也來了?” 一聲冷哼從身側響起宫静,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤走净,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后孤里,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伏伯,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年捌袜,在試婚紗的時候發(fā)現(xiàn)自己被綠了说搅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡虏等,死狀恐怖弄唧,靈堂內(nèi)的尸體忽然破棺而出适肠,到底是詐尸還是另有隱情,我是刑警寧澤候引,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布侯养,位于F島的核電站,受9級特大地震影響澄干,放射性物質(zhì)發(fā)生泄漏逛揩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一麸俘、第九天 我趴在偏房一處隱蔽的房頂上張望辩稽。 院中可真熱鬧,春花似錦从媚、人聲如沸逞泄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炭懊。三九已至,卻和暖如春拂檩,著一層夾襖步出監(jiān)牢的瞬間侮腹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工稻励, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留父阻,地道東北人。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓望抽,卻偏偏與公主長得像加矛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子煤篙,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

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