題目描述
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
思路1:遞迴
首先寫乙個返回樹的高度的函式
然後判斷左右子樹高度差
判斷左子樹的左右子樹高度差
判斷右子樹的左右子樹高度差
。。。
class
solution
inthigh
(treenode* proot)
};
思路2:自下而上判斷是否平衡
用遞迴雖然好,但是占用空間較多
在計算樹的高度的函式中
加入乙個 對於 左右子樹高度差 的判斷
一旦出現左右子樹高度差不對,也就是不平衡,就返回-1
這樣避免了一部分的重複計算
class
solution
inthigh
(treenode* proot)
};
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹
題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。該二叉樹不一定是二叉搜尋樹 分析 每碰到乙個節點,就判斷以該結點為根的左右子樹是否是平衡二叉樹 通過求左右子樹的樹高 然後在判斷該結點的左右子樹為根的子樹是否是平衡二叉樹。這樣就遍歷樹中每乙個結點,對每個結點都判斷是否平衡二叉樹。計算樹高 最壞...
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹
題目就是標題 public class main3 else public int balanced solution treenode root,int num 左節點 int left 0 if root.left null 這裡是為了判斷此節點左節點的下面是否滿足二叉樹左右深度不能超過1,下同...
判斷一棵二叉樹是否為平衡二叉樹
1.先給出樹節點資訊 typedef struct treetree,bitree 2.原理 判斷一棵樹是否為平衡二叉樹,要滿足每個節點的左右子樹的高度之差的絕對值不大於1。因此,我們這裡可以比較每個節點的左右字數高度,判斷他們差的絕對值是否滿足平衡二叉樹的條件即可 3.演算法 求二叉樹高度演算法 ...