LintCode : 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.
Example:
Given binary tree A={3,9,20,#,#,15,7}
, B={3,#,20,15,7}
A) 3 B) 3 / \ \ 9 20 20 / \ / \ 15 7 15 7
The binary tree A is a height-balanced binary tree, but B is not.
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /** * @param root: The root of binary tree. * @return: True if this Binary tree is Balanced, or false. */ private boolean res = true; public boolean isBalanced(TreeNode root) { // write your code here if (root == null) { return true; } helper(root); if (res == false) { return false; } return true; } public void helper(TreeNode root) { if (root != null) { if (Math.abs(height(root.left) - height(root.right)) > 1) { res = false; return; } helper(root.left); helper(root.right); } } public int height(TreeNode root) { if (root == null) { return 0; } return Math.max(height(root.left), height(root.right)) + 1; } }
The trick here is to compare the height of the left child and right child.
posted on 2016-04-19 14:42 dingjunnan 阅读(108) 评论(0) 编辑 收藏 举报