判断一棵二叉树是否是平衡二叉树
思路
平衡二叉树的特点是左右子树的高度差不超过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);
}