在这段代码中,我显示了存储在链接列表中的所有文件对象。我以递归方式运行它,这让我可以探索整个二叉树。
我的工作是计算每个 File 对象位于树的哪一层。
如何使用递归来做到这一点?我本来想只计算里面的变量,但是如果级别下降,我不知道在哪里减去该值。
有什么想法吗?
public void display(T node)
{
Node temp = node;
if (temp != null)
{
display(temp.left);
display(temp.right);
}
}
最佳答案
这看起来像是一个家庭作业/学习问题,所以这里有一些提示。
- 您不需要这样的计数器。
- 巧妙的解决方案包括使
displayFiles
成为一个简单的非递归函数,它使用递归辅助函数来完成所有工作。当前级别是辅助函数的参数。
好的,这是解决方案的草图:
public void display(T node) {
doDisplay(node, 0);
}
private void doDisplay(T node, int level) {
if (node != null) {
// output this node ... including the level
display(node.left, level + 1);
display(node.right, level + 1);
}
}
请注意,变量没有递增和递减,因此这些方法是完全可重入的。
关于java - 如何确定哪个项目位于二叉树中的级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13262544/