題目:
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.
題解:
採用遞迴的方法,要記錄depth用來比較。
程式碼如下:
1 public int checkBalanced(TreeNode t){
2 if(t==null)
3 return 0;
4
5 int leftheight = checkBalanced(t.left);
6 if(leftheight == -1)
7 return -1;
8
9 int rightheight = checkBalanced(t.right);
10 if(rightheight == -1)
11 return -1;
12
13 if(Math.abs(leftheight-rightheight)>1)
14 return -1;
15 else
16 return Math.max(leftheight,rightheight)+1;
17 }
18
19 public boolean isBalanced(TreeNode root) {
20 if(checkBalanced(root) == -1)
21 return false;
22 else
23 return true;
24 }
2 if(t==null)
3 return 0;
4
5 int leftheight = checkBalanced(t.left);
6 if(leftheight == -1)
7 return -1;
8
9 int rightheight = checkBalanced(t.right);
10 if(rightheight == -1)
11 return -1;
12
13 if(Math.abs(leftheight-rightheight)>1)
14 return -1;
15 else
16 return Math.max(leftheight,rightheight)+1;
17 }
18
19 public boolean isBalanced(TreeNode root) {
20 if(checkBalanced(root) == -1)
21 return false;
22 else
23 return true;
24 }