1. 程式人生 > >LC.110. Balanced Binary Tree

LC.110. Balanced Binary Tree

左右 || boolean 平衡 case lan esc eno fine

https://leetcode.com/problems/balanced-binary-tree/description/
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.


bal. binary tree:

3 3: max(1,2) + 1 = 3

/ \
9 20 9: 1 20:2 (max 1, 1) + 1 = 2
/ \
15 7 both 1

not bal. binary tree:
3 3-1 > 1 not bal. return -1
/ \
9 20 9: 1 ; 20: max(1,2) + 1 = 3
/ \
15 7 15: 1 7: 2
\
9 9: 1


 1 public boolean isBalanced(TreeNode root) {
 2         if
(root == null) return true; 3 return getHeight(root) != -1 ; 4 } 5 //get current node height: -1 代表不平衡 6 private int getHeight(TreeNode root){ 7 //base case: 空葉子高度 = 0 非空葉子高度 = 1 8 if (root == null) return 0 ; 9 // post order 10 int l = getHeight(root.left) ;
11 int r = getHeight(root.right) ; 12 int diff = Math.abs(l-r) ; 13 //如果當前節點下左右子樹 不平衡 或者 高度 差值 》 1 則 當前節點返回 不平衡 -1 14 if (l == -1 || r == -1 || diff > 1) { 15 return - 1 ; 16 } 17 //如果平衡,返回 正常高度 18 return Math.max(l,r) + 1 ; 19 }



LC.110. Balanced Binary Tree