平衡二叉树逻辑

时间:2018-08-24 16:54:01

标签: algorithm tree binary-tree

问题在于确定给定的树(以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;
    }
}

1 个答案:

答案 0 :(得分:1)

您将在else子句中丢弃递归调用的结果。尝试这样的事情:

if((abs(depth(A->left) - depth(A->right))) <= 1 && isBalanced(A->left) && isBalanced(A->right)) {
    return 1;
}
else {
    return 0;
}