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

Java 在没有递归的情况下,如何找到二叉搜索树的大小?,java,binary-search-tree,Java,Binary Search Tree,我知道如何通过递归找到树的大小,但我不确定如何在没有递归的情况下找到它。 这是我到目前为止所拥有的。我认为是我的if语句阻止了我横穿这棵树 public int size() { size = 0; NodeWord current = root; while(current != null) { if(current.left != null) { size++; } else {

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

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

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

  • 在这种情况下,您可以使用
    堆栈
    ,其中
    节点
    是二进制搜索树的
    节点

  • 首先将根
    节点
    推入堆栈

  • 然后编写一个while循环,该循环一直运行,直到堆栈为空

  • 在while循环的每次迭代中,您可以查看
    堆栈的顶部
    节点
    ,并将该
    节点
    的子节点推入
    堆栈
    。如果它没有子节点,则从
    堆栈中弹出该
    节点
    ,并对其执行所需的任何计算(只需在示例中增加一个计数器)

  • 根据所需的树遍历顺序,可以更改推送和弹出当前
    节点及其两个子节点的顺序

您能否通过编辑此问题发布您的代码?请告诉我们你想做什么。那真的很有帮助,谢谢。我有一个关于二元搜索树的后续问题。BST中的级别是什么意思。一个级别描述的是分支还是整个子树?