java - 如何确定哪个项目位于二叉树中的级别?

标签 java recursion binary-tree

在这段代码中,我显示了存储在链接列表中的所有文件对象。我以递归方式运行它,这让我可以探索整个二叉树。

我的工作是计算每个 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/

相关文章:

algorithm - 递归交错排列

javascript - 递归函数的回调

binary-tree - 二叉树遍历的递归 VS 非递归

binary-tree - 处理 AVL 树中的重复键

java - Eclipse 内部错误 "Polling news feeds"

java - 带有多个复选框的对话框android源代码

algorithm - Ocaml - 编写一个参数数量在运行时确定的函数

java - 为什么在实现优先级队列时使用堆而不是二叉树?

java - 使用 UnicodeFont 不进行平滑处理

java - 幂和阶乘级数和 说明