Java 在没有递归的情况下,如何找到二叉搜索树的大小?
我知道如何通过递归找到树的大小,但我不确定如何在没有递归的情况下找到它。 这是我到目前为止所拥有的。我认为是我的if语句阻止了我横穿这棵树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 {
public int size() {
size = 0;
NodeWord current = root;
while(current != null) {
if(current.left != null) {
size++;
}
else {
current = current.right;
}
}
return size;
}
每当您希望将递归解决方案转换为迭代解决方案时,都可以使用
堆栈
- 在这种情况下,您可以使用
,其中堆栈
是二进制搜索树的节点
节点
- 首先将根
推入堆栈节点
- 然后编写一个while循环,该循环一直运行,直到堆栈为空
- 在while循环的每次迭代中,您可以查看
堆栈的顶部
,并将该节点
的子节点推入节点
。如果它没有子节点,则从堆栈
堆栈中弹出该
,并对其执行所需的任何计算(只需在示例中增加一个计数器)节点
- 根据所需的树遍历顺序,可以更改推送和弹出当前
节点及其两个子节点的顺序