1. 程式人生 > >平衡樹、AVL樹

平衡樹、AVL樹

平衡樹

平衡樹有AVL樹、紅黑樹、2-3樹、2-3-4樹


AVL樹

AVL樹是最早的一種平衡樹,它以發明者的名字命名。

特徵

在AVL樹中節點的左子樹和右子樹的高度差不會大於1

實現

在AVL樹中每個節點都儲存著一個額外的資料,它的左子樹和右子樹的高度差,這個差值不能大於1。
插入一個元素後,檢查該元素所在的最低子樹的根,如果它的子節點的高度相差大於1,執行一次或兩次旋轉使它們的高度相等;然後接著檢查上面的節點,必要時均衡高度;這個檢測一直向上,直到根為止。

效率

AVL樹查詢的時間複雜度為O(logN),因為樹一定是平衡的。但是,由於插入或刪除一個節點時需要掃描兩趟,一次向下查詢插入點,一次向上平衡樹,AVL樹不如紅黑樹效率高,也不如紅黑樹常用。