題目
判斷一棵二叉樹是否是平衡二叉樹
思路
平衡二叉樹的特點是左右子樹的高度差不超過1 只需要遞歸查找左右子樹的高度進行比較,這裏再次簡述一下遞歸的三個要點。
1.終止條件 2.邏輯處理 3.drll down
不要進行人肉遞歸,只需要考慮root節點的左右子樹的高度 將問題簡單話,尋找重複子問題。
code
private boolean flag = true;//是否平衡
public boolean IsBalanced_Solution(TreeNode root) {
if(root == null) return flag;
dfs(root);
return flag;
}
private int dfs(TreeNode root){
//1.終止條件
if(root == null || !flag ){
return 0;
}
int left = dfs(root.left);
int right = dfs(root.right);
flag = Math.abs(left-right) > 1 ? false : true;
return 1+Math.max(left,right);
}