AVL樹平衡因子詳解
阿新 • • 發佈:2019-01-07
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;
同理,其他節點的平衡因子的演算法都是這要來的,所以大家現在一定會計算各個節點的平衡因子了吧。
當然,是平衡二叉樹,我們把這個二叉樹進行旋轉來變換成平衡二叉樹:
至於平衡二叉樹的平衡因子,相信大家知道怎麼去求解了吧。