1. 程式人生 > >資料結構之AVL平衡二叉樹

資料結構之AVL平衡二叉樹

平衡二叉樹(Balanced Binary Tree)又被稱為AVL樹(有別於AVL演算法),且具有以下性質:它是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。這個方案很好的解決了二叉查詢樹退化成連結串列的問題,把插入,查詢,刪除的時間複雜度最好情況和最壞情況都維持在O(logN)。但是頻繁旋轉會使插入和刪除犧牲掉O(logN)左右的時間,不過相對二叉查詢樹來說,時間上穩定了很多。

旋轉

涉及到插入或者刪除操作時,可能會引發二叉樹的不平衡。需要對二叉平衡樹進行旋轉。
下圖涉及到四類插入操作,都引發了不平衡。

  1. 左子樹左孩子(1)。單向右旋
  2. 左子樹右孩子(4)。先左後右旋轉
  3. 右子樹左孩子(3)。先右後左旋轉
  4. 右子樹右孩子(6)。單向左旋轉

在這裡插入圖片描述