【发布时间】:2017-06-04 12:08:52
【问题描述】:
我正面临着经典的“它有效,但我不知道为什么!” - 问题。我只是应用了一个我从另一个整数练习中知道的原理,但在这里我必须使用树。该方法测试成功。我应该计算一棵树的结,并且我这样做是遍历它(在这种情况下:inorder),每次我成功遍历(意思是:不面对一个空的子树),我都算作结。在这种情况下,我想知道为什么这段代码没有计算太多的结。例如,当我总是向左走并面对一棵空的子树时,我会不会一直向上走,直到我到达一个可以向右走的结?为什么我的代码会避免这种问题?
public static int numberKnots (Tree b) {
int count = 0;
if (b.empty()) {
return 0;
}
else {
traverse.inorder(b.left());
traverse.inorder(b.right());
count = 1;
}
return count + numberKnots(b.left()) + numberKnots(b.right());
}
【问题讨论】:
标签: java recursion tree tree-traversal