标签:style blog http ar io color os 使用 sp
Balanced Binary Tree
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.
Show Tags
SOLUTION 1:
使用inner Class来解决
1 // Solution 1: 2 public boolean isBalanced1(TreeNode root) { 3 return dfs(root).isBalanced; 4 } 5 6 // bug 1: inner class is like: "public class ReturnType {", no () 7 public class ReturnType { 8 boolean isBalanced; 9 int depth; 10 11 ReturnType(int depth, boolean isBalanced) { 12 this.depth = depth; 13 this.isBalanced = isBalanced; 14 } 15 } 16 17 public ReturnType dfs(TreeNode root) { 18 ReturnType ret = new ReturnType(0, true); 19 20 if (root == null) { 21 return ret; 22 } 23 24 ReturnType left = dfs(root.left); 25 ReturnType right = dfs(root.right); 26 27 ret.isBalanced = left.isBalanced 28 && right.isBalanced 29 && Math.abs(left.depth - right.depth) <= 1; 30 31 // bug 2: remember to add 1( the root depth ) 32 ret.depth = Math.max(left.depth, right.depth) + 1; 33 34 return ret; 35 }
SOLUTION 2:
将 get depth函数提出
1 // Solution 2: 2 public boolean isBalanced(TreeNode root) { 3 if (root == null) { 4 return true; 5 } 6 7 return isBalanced(root.left) && isBalanced(root.right) 8 && Math.abs(getDepth(root.left) - getDepth(root.right)) <= 1; 9 } 10 11 public int getDepth(TreeNode root) { 12 if (root == null) { 13 return 0; 14 } 15 16 return Math.max(getDepth(root.left), getDepth(root.right)) + 1; 17 }
GITHUB:
https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/tree/IsBalanced.java
LeetCode: Balanced Binary Tree 解题报告
标签:style blog http ar io color os 使用 sp
原文地址:http://www.cnblogs.com/yuzhangcmu/p/4172667.html