题目
方法一:后序递归
递归遍历的同时判断是否是平衡二叉树,如果不是,就置为-1,如果是 就正常做递归求最大深度
参考图解网址
判断平衡二叉树
class Solution {
public boolean isBalanced(TreeNode root) {
return dfs(root) !=-1;
}
public int dfs(TreeNode root){
if(root == null) return 0;
int left = dfs(root.left);
if(left==-1) return -1;// 左子树高度差大于1,return -1表示已经不是平衡树了 就无需去递归右子树了
int right = dfs(root.right);
if(right==-1) return -1;// 右子树高度差大于1,return -1表示已经不是平衡树了
if(Math.abs(left-right)>1) return -1; // 左右子树高度差大于1,return -1表示已经不是平衡树了
else return Math.max(left,right)+1;
}
}