leetcode -- Balanced Binary Tree TODO

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 everynode never differ by more than 1.

 [解题思路]

检查每个node是否是balanced,大数据集挂掉了

 1 /**
 2  * Definition for binary tree
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode(int x) { val = x; }
 8  * }
 9  */
10 public class Solution {
11     public boolean isBalanced(TreeNode root) {
12         // Start typing your Java solution below
13         // DO NOT write main() function
14         if(root == null){
15             return true;
16         }
17         
18         return checkBalance(root);
19     }
20     
21     public boolean checkBalance(TreeNode node){
22         if(node == null){
23             return true;
24         }
25         int left = getDepth(node.left);
26         int right = getDepth(node.right);
27         if(Math.abs(left - right) > 1){
28             return false;
29         }
30         return checkBalance(node.left) && checkBalance(node.right);
31     }
32     
33     public int getDepth(TreeNode node){
34         if(node == null){
35             return 0;
36         }
37         int left = getDepth(node.left);
38         int right = getDepth(node.right);
39         return Math.max(left, right) + 1;
40     }
41 }

 

posted @ 2013-08-16 21:28  feiling  阅读(227)  评论(0编辑  收藏  举报