[leetcode] problem 110 – balanced binary tree

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]:

1
2
3
4
5
  3
/
9 20
/
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;
}