请帮我用链表实现二叉树的前序遍历
时间: 2023-11-20 07:04:56 浏览: 83
实现前、中、后序遍历二叉树
以下是使用链表实现二叉树前序遍历的 Python 代码:
```python
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def preorder(root):
if root is None:
return
stack = []
stack.append(root)
while stack:
node = stack.pop()
print(node.data, end=' ')
if node.right is not None:
stack.append(node.right)
if node.left is not None:
stack.append(node.left)
# 测试代码
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
root.right.right = Node(7)
preorder(root) # 输出:1 2 4 5 3 6 7
```
注释:
1. 首先定义了一个 `Node` 类,表示二叉树的节点,包含一个数据域 `data` 和两个指针 `left` 和 `right`,分别指向左右子树;
2. `preorder` 函数用于实现前序遍历,其中使用了一个栈来辅助遍历;
3. 如果当前节点不为空,就将其加入栈中;
4. 重复以下操作,直到栈为空:
- 弹出栈顶节点,并输出其数据域;
- 如果该节点的右子树不为空,将其右子树加入栈中;
- 如果该节点的左子树不为空,将其左子树加入栈中;
5. 最后,我们构造了一个测试二叉树,并对其进行前序遍历,输出结果为 `1 2 4 5 3 6 7`。
阅读全文