小螞蟻學習數據結構(34)——平衡二叉樹的概念

平衡二叉樹的做用spa

    因爲二叉排序樹的結構可能不平衡,致使對樹的運算的時間複雜度增長。.net

    調整二叉排序樹的結構,使其始終成爲平衡的狀態——平衡二叉樹。blog

平衡二叉樹的定義排序

    若一個二叉樹中每一個結點的左右子樹的高度至多相差1,則稱此樹爲平衡樹ci

平衡因子get

    二叉樹中的每一個結點的左子樹高度減去右子樹高度。博客

    平衡樹中的每一個結點的平衡因子只能是:一、0、-1it

平衡二叉樹的構造思路二叉樹

    在構造平衡二叉樹的過程當中,每當插入一個結點時,首先檢查是否由於插入而破壞了樹的平衡性,如果,則找出其中最小不平衡子樹,在保持排序樹特性的前提下,調整最小不平衡子樹中個結點之間的連接關係,以達到新的平衡。方法

最小不平衡子樹

    以離插入結點最近,且平衡因子絕對值大於1的結點做爲根的子樹。

須要對最小不平衡樹進行調整

調整方法四種方式:

    1,單向右旋平衡處理:

        在左子樹根節點的左子樹上插入結點,能夠進行一次向右的順時針旋轉操做。

    2,單向左旋平衡處理:

        在右子樹根節點的右子樹上插入結點,能夠進行一次向左的逆時針旋轉操做。

    3,雙向旋轉(先左後右)

        在左子樹的右子樹上插入結點,先進行一次左的逆時針旋轉,再進行一次向右的順時針旋轉。

    4,雙向旋轉(先右後左)

        在右子樹的左子樹上插入結點,先進行一次右的順時針旋轉,再進行一次向左的逆時針旋轉。


    學PHP的小螞蟻 博客 http://my.oschina.net/woshixiaomayi/blog

相關文章
相關標籤/搜索