检查二叉树是否平衡

Check If Binary Tree Is Balanced

这是我的错误答案。我对递归还是很困惑,为什么我不能把true和false放在一起,而是把true放在开头?

public class Solution {
  public boolean isBalanced(TreeNode root) {    
    int left = findHeight(root.left);
    int right = findHeight(root.right);
    if (Math.abs(left-right) <= 1) {
      return true;
    } else {
      return false;
    } 
    return (isBalanced(root.left)&&isBalanced(root.right));

  }
  private int findHeight(TreeNode root) {  
    if (root == null) {
      return 0;
    }
    return Math.max(findHeight(root.left), findHeight(root.right)) + 1;
  }
}

这是正确答案。

public boolean isBalanced(TreeNode root) {
    if (root==null) {
      return true;
    }
    int leftHeight = findHeight(root.left);
    int rightHeight = findHeight(root.right);
    if(Math.abs(leftHeight-rightHeight)>1) {
      return false;
    } 
    return isBalanced(root.left)&&isBalanced(root.right);
  }

if (Math.abs(left-right) <= 1) { return true; } else { return false; } 总是会 return 一些东西,这意味着你永远不会在之后进行递归调用。