平衡二叉樹是指一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹,即所有結點,其左右子樹高度差不超過1。
判讀步驟是:
先計算所有結點的高度,高度是從葉節點開始(其高度為1)自底向上逐層累加的,不同葉子節點計算開始計算時,高度不同取最大值。
然後計算結點左右子樹的高度差,如果絕對值都不超過1,就是平衡的。
例子:
A
/ \
B C
D E
高度是 D:1 E:1 B:2 C:1 A:3,A的高度差為1, B為0 C為0 葉子結點可以不用計算,肯定為0。上述例子的二叉樹就是平衡的二叉樹。
看一下例子
/
F
高度是 F:1 D:2 E:1 B:3 C:1 A:4,其中A的左右子樹高度差B3 - A1 = 2,高度差大於2,所以不平衡。
當然實際判斷是不是平衡二叉樹,不一定需要計算每一個結點高度,因為左子樹高一點或者右子樹高一點,表面看過去還是比較明顯的,計算一下比較明顯的幾個點就可以。
平衡二叉樹是指一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹,即所有結點,其左右子樹高度差不超過1。
判讀步驟是:
先計算所有結點的高度,高度是從葉節點開始(其高度為1)自底向上逐層累加的,不同葉子節點計算開始計算時,高度不同取最大值。
然後計算結點左右子樹的高度差,如果絕對值都不超過1,就是平衡的。
例子:
A
/ \
B C
/ \
D E
高度是 D:1 E:1 B:2 C:1 A:3,A的高度差為1, B為0 C為0 葉子結點可以不用計算,肯定為0。上述例子的二叉樹就是平衡的二叉樹。
看一下例子
A
/ \
B C
/ \
D E
/
F
高度是 F:1 D:2 E:1 B:3 C:1 A:4,其中A的左右子樹高度差B3 - A1 = 2,高度差大於2,所以不平衡。
當然實際判斷是不是平衡二叉樹,不一定需要計算每一個結點高度,因為左子樹高一點或者右子樹高一點,表面看過去還是比較明顯的,計算一下比較明顯的幾個點就可以。