最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

11.5平衡二叉樹(AVL樹)

2022-01-19 22:35 作者:取悅疾風(fēng)  | 我要投稿

內(nèi)容來自尚硅谷Java數(shù)據(jù)結(jié)構(gòu)與java算法(Java數(shù)據(jù)結(jié)構(gòu)與算法)_嗶哩嗶哩_bilibili

寫在前面:本文內(nèi)容大致和原視頻內(nèi)老師的筆記內(nèi)容相同,會(huì)偶爾插入自己的注釋和理解,盡量會(huì)完成作業(yè)

11.5平衡二叉樹(AVL樹)

11.5.1看一個(gè)案例(說明二叉排序樹可能的問題)

給你一個(gè)數(shù)列{1,2,3,4,5,6},要求創(chuàng)建一棵二叉排序樹(BST),并分析問題所在

左子樹全部為空,從形式上看,更像一個(gè)單鏈表

1.????? 插入速度沒有影響

2.????? 查詢速度明顯降低(因?yàn)樾枰来伪容^)。

3.????? 不能發(fā)揮BST的優(yōu)勢,因?yàn)槊看芜€需要比較左子樹,其查詢速度比單鏈表還慢,

4.????? 解決方案-平衡二叉樹(AVL)

11.5.2基本介紹

1.????? 平衡二叉樹也叫平衡二叉搜索樹(Self-balancing binary search tree)又被稱為AVL樹,可以保證查詢效率較高。

2.????? 具有以下特點(diǎn):它是一棵空樹或它的左右兩個(gè)子樹的高度差的絕對(duì)值不超過1,并且左右兩個(gè)子樹都是一棵平衡二叉樹。平衡二叉樹的常用實(shí)現(xiàn)方法有紅黑樹、AVL、替罪羊樹、Treap、伸展樹等。

3.????? 舉例說明,看看下面哪些AVL樹,為什么?

11.5.3應(yīng)用案例-單旋轉(zhuǎn)(左旋轉(zhuǎn))

要求:給你一個(gè)數(shù)列,創(chuàng)建出對(duì)應(yīng)的平衡二叉樹.數(shù)列{4,3,6,5,7,8}

思路分析(示意圖)

代碼實(shí)現(xiàn)

11.5.4應(yīng)用案例-單旋轉(zhuǎn)(右旋轉(zhuǎn))

要求:給你一個(gè)數(shù)列,創(chuàng)建出對(duì)應(yīng)的平衡二叉樹.數(shù)列{10,12,8,9,7,6}

思路分析(示意圖)

代碼實(shí)現(xiàn)

11.5.5應(yīng)用案例-雙旋轉(zhuǎn)

前面的兩個(gè)數(shù)列,進(jìn)行單旋轉(zhuǎn)(即一次旋轉(zhuǎn))就可以將非平衡二叉樹轉(zhuǎn)成平衡二叉樹,但是在某些情況下,單旋轉(zhuǎn)不能完成平衡二叉樹的轉(zhuǎn)換。比如數(shù)列

int[]arr = { 10,11,7,6,8,9};運(yùn)行原來的代碼可以看到,并沒有轉(zhuǎn)成AVL樹.

int[]arr= {2,1,6,5,7,3};//運(yùn)行原來的代碼可以看到,并沒有轉(zhuǎn)成AVL樹

1.問題分析

2.解決思路分析

(1)當(dāng)符號(hào)右旋轉(zhuǎn)的條件時(shí)

(2)如果它的左子樹的右子樹高度大于它的左子樹的高度

(3)先對(duì)當(dāng)前這個(gè)結(jié)點(diǎn)的左節(jié)點(diǎn)進(jìn)行左旋轉(zhuǎn)

(4)在對(duì)當(dāng)前結(jié)點(diǎn)進(jìn)行右旋轉(zhuǎn)的操作即可

代碼實(shí)現(xiàn)(AVL樹的完整匯總代碼)


11.5平衡二叉樹(AVL樹)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
康马县| 宣威市| 绥德县| 盱眙县| 平乐县| 谷城县| 洞头县| 泾川县| 永川市| 栾川县| 宣城市| 四川省| 蚌埠市| 什邡市| 新丰县| 托克逊县| 长子县| 贵德县| 施秉县| 宁安市| 白河县| 渝北区| 彩票| 鄂托克前旗| 徐州市| 阳原县| 滁州市| 平凉市| 同心县| 应用必备| 米脂县| 玉溪市| 腾冲县| 鄄城县| 定远县| 正宁县| 莱芜市| 瑞昌市| 尼木县| 通辽市| 洛川县|