题目描述
思路
左右两个子树的高度差 = 左右两个子树的最大深度差,递归到某个节点时,先判断其左右子树的最大深度差。最大深度用之前的方法来求。
class Solution {
public boolean isBalanced(TreeNode root) {
//一直执行isBalanced,中间没有被阻拦,说明之前的节点全部满足条件
if (root == null) {
return true;
}
int left = maxDepth(root.left);
int right = maxDepth(root.right);
int diff = Math.abs(left - right);
if (diff <= 1) {
return isBalanced(root.left) && isBalanced(root.right);
} else {
return false;
}
}
//求某节点的最大深度
public int maxDepth(TreeNode node) {
if (node == null) {
return 0;
}
int left = maxDepth(node.left);
int right = maxDepth(node.right);
return Math.max(left, right) + 1;
}
}