检查二叉树是否平衡
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
一些东西,这意味着你永远不会在之后进行递归调用。
这是我的错误答案。我对递归还是很困惑,为什么我不能把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
一些东西,这意味着你永远不会在之后进行递归调用。