0

我有这个作业问题,我已经完成了除了这个之外的所有方法,isPerfectlyBalanced().

我的所有测试都通过了,除了应该返回false但返回的测试true。我附上了我当前的代码和失败的测试。任何关于如何解决这个问题的描述,甚至让我知道我的代码哪里错了!

private boolean isPerfectlyBalanced(Node node) {

    if (node == null) {
        return true;
    }

    if(size(node.left) == size(node.right)) {
        return true;
    }
    isPerfectlyBalanced(node.left);
    isPerfectlyBalanced(node.right);
    return false;

}


public boolean isPerfectlyBalancedS() {
    // TODO
    if (root == null) {
        return true;
    }
    return isPerfectlyBalanced(root);

}

这是我失败的测试:

assertFalse(set.isPerfectlyBalancedS());

谢谢!

我的尺码方法:

private int size(Node node){
    if (node == null){
        return 0;
    } else {
        return (size(node.left) + 1 + size(node.right));
    }
}
public int size() {
    // TODO
    return size(root);
}
4

1 回答 1

5

在第一种方法的最后一行,您可能想要这样做:

return (isPerfectlyBalanced(node.left) && isPerfectlyBalanced(node.right));

代替

isPerfectlyBalanced(node.left);
isPerfectlyBalanced(node.right);
return false;

在您的代码中,您关闭子树上的结果isPerfectlyBalanced并始终返回 false。

于 2019-04-29T14:01:06.393 回答