【问题标题】:How would you find the size of a Binary Search Tree without recursion? [duplicate]你如何在没有递归的情况下找到二叉搜索树的大小? [复制]
【发布时间】:2017-11-06 16:23:05
【问题描述】:

我知道如何通过递归找到树的大小,但我不确定如何在没有递归的情况下找到它。 这是我到目前为止所拥有的。我认为是我的 if 语句阻止我遍历树。

  public int size() {
    size = 0;
    NodeWord current = root;
    while(current != null) {
        if(current.left != null) {
            size++;
        }
        else {
            current = current.right;
        }
    }
    return size;
}

【问题讨论】:

  • 你能通过编辑这个问题发布你的代码吗?请向我们展示您尝试做的事情。

标签: java binary-search-tree


【解决方案1】:

当您希望将递归解决方案转换为迭代解决方案时,您可以使用Stack

  • 在这种情况下,您可以使用Stack<Node>,其中Node 是二叉搜索树的Node

  • 首先将根Node 推入堆栈。

  • 然后你编写一个 while 循环,直到 Stack 为空。

  • 1234563如果它没有子节点,则将 NodeStack 中弹出并执行您需要对其进行的任何计算(在您的示例中只增加一个计数器)。
  • 您可以根据所需的树遍历顺序更改推送和弹出当前Node 及其两个子项的顺序。

【讨论】:

  • 这真的很有帮助,谢谢。我有一个关于二叉搜索树的后续问题。 BST 中的级别是什么意思。一个级别是描述一个分支还是整个子树?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多