二叉树前序遍历非递归怎么实现,请给出完整代码
时间: 2023-01-11 09:55:36 浏览: 115
二叉树前序遍历的非递归算法
二叉树的前序遍历非递归实现方式如下:
1. 创建一个栈,用于存储遍历过程中访问的节点。
2. 从根节点开始,将根节点入栈。
3. 重复以下步骤直到栈为空:
- 取出栈顶元素并访问。
- 如果栈顶元素的右子节点不为空,将右子节点入栈。
- 如果栈顶元素的左子节点不为空,将左子节点入栈。
代码如下:
```python
def preorder_traversal(root):
if root is None:
return
stack = []
node = root
while stack or node:
while node:
print(node.val) # 访问节点
stack.append(node)
node = node.left
node = stack.pop()
node = node.right
```
这段代码使用了一个栈来模拟递归过程,每遇到一个节点就将其入栈,然后遍历它的左子树。当左子树遍历完成后,就从栈中取出栈顶元素并遍历它的右子树。
需要注意的是,在取出栈顶元素时,需要将其出栈。这样可以保证每个节点只会被遍历一次,并且保证了遍历的顺序。
阅读全文