110.平衡二叉树
用了2个函数,思路好想的。
class Solution {
public boolean isBalanced(TreeNode root) {
dfs(root);
if(x>1)
return false;
else
return true;
}
int x=0;
int dfs(TreeNode root){//计算每个节点的子树高度差
if(root==null){
return 0;
}
if(x>1) return x;
if(root!=null&&root.left==null&&root.right==null)
return 0;
x=Math.abs(dfs_tall(root.left)-dfs_tall(root.right));
dfs(root.left);
dfs(root.right);
return 0;
}
int dfs_tall(TreeNode root){//计算该树高度
if(root==null){
return 0;
}
if(root!=null&&root.left==null&&root.right==null){
return 1;
}
return 1+Math.max(dfs_tall(root.left),dfs_tall(root.right));
}
}