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;

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


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