中序遍历非递归算法队列实现
时间: 2023-12-26 22:21:47 浏览: 93
二叉树中序遍历的非递归算法实现[借鉴].pdf
中序遍历的非递归算法可以使用栈来实现。具体步骤如下:
1. 创建一个空栈和一个指针cur指向树的根节点。
2. 循环执行以下步骤,直到栈为空且cur为空:
a. 将cur节点及其所有左子节点依次入栈,并将cur指向当前节点的左子节点,直到cur为空。
b. 如果栈不为空,弹出栈顶节点,将该节点的值输出。
c. 将cur指向当前节点的右子节点。
3. 当栈为空且cur为空时,遍历结束。
实现中序遍历非递归算法的示例代码如下:
```java
public void iterativeMiddleorderTraversal(TreeNode root) {
if (root == null) {
return;
}
Stack<TreeNode> stack = new Stack<>();
TreeNode cur = root;
while (!stack.isEmpty() || cur != null) {
while (cur != null) {
stack.push(cur);
cur = cur.left;
}
TreeNode node = stack.pop();
System.out.print(node.val + " ");
cur = node.right;
}
}
```
阅读全文