平衡二叉树理论详解
文章目錄
- 基本概念
- 平衡二叉樹插入結點
- LL(左單旋)
- RR(右單旋)
- LR(左右旋)
- RL(右左旋)
- 示例插入推導過程
基本概念
平衡二叉樹是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹
又被稱為AVL(Adelson-Velsky and Landis)樹
如圖所示,第三個圖中的樹左右高差為2,是一顆不平衡的二叉樹。
平衡二叉樹插入結點
在平衡二叉樹結點的插入過程中,可能會導致樹從平衡變成不平衡的情況,具體有四種情況,如下所示:
LL(左單旋)
由于插入到左孩子的左孩子上導致的不平衡。
恢復平衡辦法: 一次向右旋轉即可
如圖:以B節點為軸,向右旋轉
以B節點為軸向右旋轉,B節點的右子樹成為A節點的左子樹
RR(右單旋)
由于插入到右孩子的右孩子上導致的不平衡。
恢復平衡辦法: 一次向左旋轉即可
如圖:以B節點為軸,向左旋轉
以B節點為軸,向左旋轉,B結點的左子樹成為A節點的右子樹
LR(左右旋)
由于插入到左孩子的右孩子上導致的不平衡。
恢復平衡辦法: 先向左旋轉,再向右旋轉
如圖:
1、以B節點為軸,向左旋轉
2、以C節點為軸,向右旋轉
下圖同上面圖一個意思,只是考慮節點多一些。
RL(右左旋)
由于插入到右孩子的左孩子上導致的不平衡。
恢復平衡辦法: 先向右旋轉,再向左旋轉
如圖:
1、以B節點為軸,向右旋轉
2、以C節點為軸,向左旋轉
下圖同上面圖一個意思,只是考慮節點多一些。
示例插入推導過程
例題:輸入關鍵字序列(16,3,7,11 ,9,26)給出AVL樹
如圖推導過程:
ps:計劃每日更新一篇博客,今日2023-05-12,日更第二十六天。(補更)
昨日更新:
動態規劃理論基礎
總結