如何在没有递归的情况下找到二叉搜索树的大小?

时间:2017-11-06 07:55:28

标签: java binary-search-tree

我知道如何使用递归来查找树的大小,但我不确定如何在没有递归的情况下找到它。 这是我到目前为止所拥有的。我认为这是我的if语句阻止我横穿树。

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

1 个答案:

答案 0 :(得分:1)

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

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

  • 首先将根Node推入堆栈。

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

  • 在while循环的每次迭代中,您可以查看Node的顶部Stack,并将Node的子项推送到Stack。如果它没有子节点,则从Node中弹出Stack并执行您需要进行的任何计算(只需在示例中增加一个计数器)。

  • 您可以根据所需的遍历顺序更改推送和弹出当前Node及其两个子项的顺序。