题解 | #判断是不是平衡二叉树#
判断是不是平衡二叉树
http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222
递归求解
- 左子树是平衡二叉树
- 右子树是平衡二叉树
- 高度差相差不超过1(这里用到绝对值,可以是根节点的左子树的高度 比右子树的高度多1,也可以是根节点右子树的高度比左子树的高度多1)
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if (root == null) {
return true;
}
int leftMax = depth(root.left);
int rightMax = depth(root.right);
return IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right) && Math.abs(leftMax - rightMax) <= 1;
}
/**
*求解一棵树的最大高度
*/
public int depth(TreeNode root) {
if (root == null) {
return 0;
}
return Math.max(depth(root.left), depth(root.right)) + 1;
}
}