1. 程式人生 > >AVL樹平衡因子詳解

AVL樹平衡因子詳解

AVL樹就是平衡二叉樹,左子樹和右子樹的高度之差絕對值不超過1

而且規定,平衡二叉樹的每個節點的平衡因子只能是-1 1 0

按照公式   平衡因子 = 右子樹的高度 - 左子樹的高度

-1 : 表示左子樹比右子樹高

1  : 表示右子樹比左子樹高

0 : 表示左子樹和右子樹等高

但是很多人都知道公式,但卻有時候不知道怎麼去看一個平衡二叉樹。

接下來我為大家詳解一下平衡因子到底是怎麼看的。

首先,我們先看一個普通的二叉樹,非平衡樹

因為這樣能更好的說明問題:


此圖為普通二叉樹,方格內為各個點的平衡因子

接下來我為大家分析一下:

16的平衡因子(-3),左子樹的高度為2,右子樹的高度為

5,所以是2-5 = -3

26的平衡因子(-1),在同一層次上看,即


26為根節點,左邊的高度為1,右邊的高度為0,所以26的平衡因子為: 0 - 1 = -1

18的平衡因子為(0),以18為根節點來看:


18為根節點,左邊的高度為0,右邊的高度為0,所以18的平衡因子為: 0 - 0 = 0

3的平衡因子為4.用圖形表示為:


3為根節點,右子樹的高度為4,左子樹的高度為0,所以3的平衡因子為: 4 - 0 = 4

同理,其他節點的平衡因子的演算法都是這要來的,所以大家現在一定會計算各個節點的平衡因子了吧。

當然,是平衡二叉樹,我們把這個二叉樹進行旋轉來變換成平衡二叉樹:

至於平衡二叉樹的平衡因子,相信大家知道怎麼去求解了吧。