【发布时间】:2016-05-31 06:42:59
【问题描述】:
下面的代码是使用私有方法来添加变量计数。在该变量下方是条件,据我了解,在递归堆栈跟踪 upword 之前不会运行。我对么?我的测试失败了,我正在尝试查看是因为我的代码错误还是我使用的递归错误。
public boolean containsRightRedEdge() {
int count = 0;
count += containsRightRedEdge(root);
if(count > 0) return true;
return false;
}
private int containsRightRedEdge(Node n) {
if (n == null) return 0;
if (isRed(n.right)) {
return 1;
}
return containsRightRedEdge(n.left) + 0 + containsRightRedEdge(n.right);
}
【问题讨论】:
-
应该
return containsRightRedEdge(n.left) + 0 + containsRightRedEdge(n.left);是return containsRightRedEdge(n.left) + 0 + containsRightRedEdge(n.right);吗? -
另外,您的测试是如何失败的?你的输入是什么?你的预期输出是什么?你观察到的输出是什么?
-
@Turing85 这不是我的测试,它的教授只说通过或失败。我真正担心的是,如果我在这种情况下正确使用递归。如果是,我会编写自己的测试来查看问题所在。我想确保在我这样做之前正确使用递归
-
@JoshuaSnider 是的,应该是,谢谢。立即做出改变。
-
@ChristopherJakob:这能解决问题还是只是你的问题中的一个错字?
标签: java recursion red-black-tree