题目描述
代码
public class Code_110 {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {
}
TreeNode(int val) {
this.val = val;
}
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}
public boolean isBalanced(TreeNode root) {
if (root==null)return true;
//左边最大深度,和右边的最大深度差
if (Math.abs(help(root.left)-help(root.right))>1)return false;
//左边,右边 是否分别又是平衡的
return isBalanced(root.left) && isBalanced(root.right);
}
//判断最大深度
private int help(TreeNode node){
if (node==null) return 0;
return Math.max(help(node.left),help(node.right))+1;
}
}
思路
判断左右节点深度,然后取深度差,然后递归调用,分判断左右节点的子节点