Balanced Binary Tree — Height DFS with Early Exit
Advertisement
Problem 353 · Balanced Binary Tree
Difficulty: Easy · Pattern: Height DFS with Early Exit
Solutions
# Python
def isBalanced(root):
def height(node):
if not node: return 0
l, r = height(node.left), height(node.right)
if l == -1 or r == -1 or abs(l-r) > 1: return -1
return 1 + max(l, r)
return height(root) != -1
// Java
public boolean isBalanced(TreeNode root) { return height(root)!=-1; }
int height(TreeNode node) {
if (node==null) return 0;
int l=height(node.left), r=height(node.right);
if (l==-1||r==-1||Math.abs(l-r)>1) return -1;
return 1+Math.max(l,r);
}
Complexity
- Time: O(n)
- Space: O(h)
Advertisement