我可以轻松地使用递归遍历二叉搜索树,但是我没有关于遍历的想法而没有递归,所以请任何人解释,.....
答案 0 :(得分:3)
重新订购:
1)创建一个空堆栈node_Stack并将根节点推送到堆栈。
2)当node_Stack不为空时执行以下操作。
- >从堆栈中弹出一个项目并将其打印出来。
- >将弹出项目的右子项推送到堆栈
- >将弹出项目的左子项推送到堆栈
<强>有序:强>
1)创建一个空堆栈。
2)以root身份初始化当前节点
3)将当前节点推送到S并将current = current-&gt; left设置为left,直到current为NULL
4)如果current为NULL并且堆栈不为空,那么
-> Pop the top item from stack.
-> Print the popped item, set current = popped_item->right
-> Go to step 3.
5)如果current为NULL并且堆栈为空,那么我们就完成了。
<强>阶交强>
1.1创建一个空堆栈
2.1在root不为NULL时执行以下操作
-> Push root's right child and then root to stack.
-> Set root as root's left child.
2.2从堆栈弹出一个项目并将其设置为root。
-> If the popped item has a right child and the right child
is at top of stack, then remove the right child from stack,
push the root back and set root as root's right child.
-> Else print root's data and set root as NULL.
2.3当堆栈不为空时,重复步骤2.1和2.2。