问题在于确定给定的树(以A为根)是否平衡。 我写了这段代码。在一个测试用例上失败了。 逻辑有什么问题?
int depth(TreeNode* root){
if (root==NULL) return 0;
else return max(depth(root->left),depth(root->right))+1;
}
int Solution::isBalanced(TreeNode* A) {
if(A==NULL) return 1;
if((abs(depth(A->left)-depth(A->right)))>1) return 0;
else {
isBalanced(A->left);
isBalanced(A->right);
return 1;
}
}
答案 0 :(得分:1)
您将在else子句中丢弃递归调用的结果。尝试这样的事情:
if((abs(depth(A->left) - depth(A->right))) <= 1 && isBalanced(A->left) && isBalanced(A->right)) {
return 1;
}
else {
return 0;
}