题目描述
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
示例 1:
给定二叉树 [3,9,20,null,null,15,7]
返回 true 。
示例 2:
给定二叉树 [1,2,2,3,3,null,null,4,4]
题解
对于当前节点,分别递归判断左子树和右子树的深度
class Solution {
int flag;
public boolean isBalanced(TreeNode root) {
int len = dfs(root);
if(flag == 1) return false;
else return true;
}
public int dfs(TreeNode root){
if(root == null) return 0;
int left = dfs(root.left);
int right = dfs(root.right);
if(Math.abs(left - right) > 1)flag = 1;
return 1 + Math.max(left,right);
}
}