要求写出非递归的方法实现对给定二叉树的先序和层序遍历算法
时间: 2024-03-22 21:40:24 浏览: 96
好的,下面是非递归实现二叉树先序遍历和层序遍历的方法:
先序遍历:
```python
def preorder_traversal(root):
if not root:
return []
stack, res = [root], []
while stack:
node = stack.pop()
res.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return res
```
层序遍历:
```python
def level_order_traversal(root):
if not root:
return []
queue, res = [root], []
while queue:
level = []
for i in range(len(queue)):
node = queue.pop(0)
level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(level)
return res
```
以上两个算法都是使用非递归的方式实现的,通过使用栈和队列来模拟递归过程,从而达到遍历二叉树的目的。
阅读全文