Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as:
a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
Example
No.1
Given the following tree [3,9,20,null,null,15,7]:
Return true.
No.2
Given the following tree [1,2,2,3,3,null,null,4,4]:
1 2 3 4 5 6 7
|
1 / 2 2 / 3 3 / 4 4
|
Return false.
Code
1 2 3 4 5 6
|
public class { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
public boolean isBalanced(TreeNode root) { return maxDepth(root) == -1 ? false : true; }
private int maxDepth(TreeNode root) { if (root == null) return 0;
int leftDepth = maxDepth(root.left);
if (leftDepth == -1) return -1;
int rightDepth = maxDepth(root.right);
if (rightDepth == -1) return -1;
return (Math.abs(leftDepth - rightDepth) > 1) ? -1 : Math.max(leftDepth, rightDepth) + 1; }
|
近期评论