我有此作业问题,除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);
}
答案 0 :(得分:4)
在第一种方法的最后一行,您可能想要这样做:
return (isPerfectlyBalanced(node.left) && isPerfectlyBalanced(node.right));
代替
isPerfectlyBalanced(node.left);
isPerfectlyBalanced(node.right);
return false;
在您的代码中,您忽略了子树上isPerfectlyBalanced
的结果,并始终返回false。