标签:
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.
根据定义求解即可。需要用到binary tree depth 的算法。
1 /** 2 * Definition for a binary tree node. 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 if (root == null || root.left == null && root.right == null) { 13 return true; 14 } 15 if (Math.abs(depth(root.left) - depth(root.right)) > 1) { 16 return false; 17 } 18 return isBalanced(root.left)&&isBalanced(root.right); 19 } 20 private int depth(TreeNode root) { 21 if (root == null) { 22 return 0; 23 } 24 int result = 1; 25 return depth(root, result); 26 } 27 private int depth(TreeNode root, int result) { 28 if (root.left == null && root.right == null) { 29 return result; 30 } 31 if (root.left != null && root.right == null) { 32 return depth(root.left, result + 1); 33 } else if (root.left == null && root.right != null) { 34 return depth(root.right, result + 1); 35 } else { 36 return Math.max(depth(root.left, result + 1), depth(root.right, result + 1)); 37 } 38 } 39 }
标签:
原文地址:http://www.cnblogs.com/FLAGyuri/p/5290701.html