用非递归算法中序遍历二叉树,输出其中序序列
时间: 2023-06-11 09:08:11 浏览: 95
非递归中序遍历二叉树
非递归算法中序遍历二叉树需要用到栈,具体步骤如下:
1. 将根节点入栈。
2. 只要栈不为空,执行以下操作:
- 将栈顶节点弹出,访问该节点。
- 如果该节点有右子树,将右子树入栈。
- 如果该节点有左子树,将左子树入栈。
3. 遍历结束。
代码如下:
```python
def inorder_traversal(root):
if not root: # 如果根节点为空,直接返回空列表
return []
stack = [] # 栈
res = [] # 用于存储遍历结果
cur = root # 当前节点
while stack or cur:
if cur: # 如果当前节点不为空,将当前节点入栈,并将当前节点更新为左子节点
stack.append(cur)
cur = cur.left
else: # 如果当前节点为空,弹出栈顶节点,访问该节点,将当前节点更新为右子节点
node = stack.pop()
res.append(node.val)
cur = node.right
return res
```
其中,`root` 表示二叉树的根节点,`val` 表示节点的值。函数返回中序遍历的结果列表。
阅读全文