平衡二叉樹 構造方法

來源:互聯網
上載者:User
平衡二叉樹

對於二叉尋找樹,儘管尋找、插入及刪除操作的平均已耗用時間為O(logn),但是它們的最差已耗用時間都是O(n),原因在於對樹的形狀沒有限制。


衡二叉樹又稱為AVL樹,它或者是一棵空樹,或者是有下列性質的二叉樹:它的左子樹和右子樹都是平衡二叉樹,且左右子樹的深度之差的絕對值不超過1。二叉
樹的的平衡因子BF為:該結點的左子樹的深度減去它的右子樹的深度,則平衡二叉樹的所有結點的平衡因子為只可能是:-1、0和1

一棵好的平衡二叉樹的特徵:

(1)保證有n個結點的樹的高度為O(logn)

(2)容易維護,也就是說,在做資料項目的插入或刪除操作時,為平衡樹所做的一些輔助操作時間開銷為O(1)

一、平衡二叉樹的構造


一棵二叉尋找樹中插入結點後,調整其為平衡二叉樹。若向平衡二叉樹中插入一個新結點後破壞了平衡二叉樹的平衡性。首先要找出插入新結點後失去平衡的最小子
樹根結點的指標。然後再調整這個子樹中有關結點之間的連結關係,使之成為新的平衡子樹。當失去平衡的最小子樹被調整為平衡子樹後,原有其他所有不平衡子樹
無需調整,整個二叉排序樹就又成為一棵平衡二叉樹

1.調整方法

(1)插入點位置必須滿足二叉尋找樹的性質
,即任意一棵子樹的左結點都小於根結點,右結點大於根結點

(2)找出插入結點後不平衡的最小二叉樹

進行調整,如果是整個樹不平衡,才進行整個樹的調整。

2.調整方式

(1)LL型

LL型:插入位置為左子樹的左結點,進行向右旋轉

由於在A的左孩子B的左子樹上插入結點F,使A的平衡因子由1變為2,成為不平衡的最小二叉樹根結點。此時A結點順時針右旋轉,旋轉過程中遵循“旋轉優先”的規則,A結點替換D結點成為B結點的右子樹,D結點成為A結點的左孩子。(2)RR型RR型:插入位置 為右子樹的右孩子,進行向左旋轉
由於在A的右子樹C的右子樹插入了結點F,A的平衡因子由-1變為-2,成為不平衡的最小二叉樹根結點。此時,A結點逆時針左旋轉,遵循“旋轉優先”的規則,A結點替換D結點成為C的左子樹,D結點成為A的右子樹。(3)LR型LR型:插入位置為 左子樹的右孩子,要進行兩次旋轉,先左旋轉,再右旋轉;第一次最小不平衡子樹的根結點先不動,調整插入結點所在的子樹,第二次再調整最小不平衡子樹。

 

 由於在A的左子樹B的右子樹上插入了結點F,A的平衡因子由1變為了2,成為不平衡的最小二叉樹根結點。第一次旋轉A結點不動,先將B的右子樹的根結點D向左上旋轉提升到B結點的位置,然後再把該D結點向右上旋轉提升到A結點的位置。

(4)RL型RL型:插入位置為右子樹的左孩子,進行兩次調整,先右旋轉再左旋轉;處理情況與LR類似。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.