我知道如何使用递归来查找树的大小,但我不确定如何在没有递归的情况下找到它。 这是我到目前为止所拥有的。我认为这是我的if语句阻止我横穿树。
public int size() {
size = 0;
NodeWord current = root;
while(current != null) {
if(current.left != null) {
size++;
}
else {
current = current.right;
}
}
return size;
}
答案 0 :(得分:1)
每当您希望将递归解决方案转换为迭代解决方案时,您都可以使用Stack
。
在这种情况下,您可以使用Stack<Node>
,其中Node
是二叉搜索树的Node
。
首先将根Node
推入堆栈。
然后你写一个while循环,一直持续到Stack为空。
在while循环的每次迭代中,您可以查看Node
的顶部Stack
,并将Node
的子项推送到Stack
。如果它没有子节点,则从Node
中弹出Stack
并执行您需要进行的任何计算(只需在示例中增加一个计数器)。
Node
及其两个子项的顺序。