写代码,根据前序遍历的顺序建立一棵二叉树,并根据遍历规则遍历二叉树。 打印输出。 3、实验要求 (1)根据前序遍历的顺序创建一棵二叉树; ()对二叉树进行前序、中序、后序遍历。
时间: 2024-12-13 17:15:33 浏览: 15
在编程中,要根据前序遍历顺序建立二叉树并进行遍历,可以遵循以下步骤:
1. **理解前序遍历**:前序遍历的顺序是根节点 -> 左子树 -> 右子树。这意味着当你得到一个序列,第一个元素就是树的根,接下来的是左子树的元素,最后是右子树的元素。
2. **建立二叉树**:
- 创建一个`Node`类,包含值`val`和左右子节点`left`和`right`。
- 使用递归函数,给定一个前序遍历列表`preorder`:
- 如果列表为空,返回`None`表示空节点。
- 找到当前遍历列表中的第一个元素作为根节点的值。
- 从剩余的列表中找到根节点的左子节点和右子节点,它们的前序遍历位置分别是剩余列表的开始位置加1和剩余长度(因为已经找到了根节点)。
- 分别递归创建左子树和右子树,并将它们设置为当前节点的左右子节点。
```python
class Node:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def build_tree(preorder):
if not preorder:
return None
root_val = preorder[0]
root = Node(root_val)
root.left = build_tree(preorder[1:])
root.right = build_tree(preorder[1+preorder.index(root_val):])
return root
```
3. **遍历二叉树**:
- **前序遍历**(根节点 -> 左子树 -> 右子树):
```python
def pre_order_traversal(node):
if node is not None:
print(node.val)
pre_order_traversal(node.left)
pre_order_traversal(node.right)
```
- **中序遍历**(左子树 -> 根节点 -> 右子树):
```python
def in_order_traversal(node):
if node is not None:
in_order_traversal(node.left)
print(node.val)
in_order_traversal(node.right)
```
- **后序遍历**(左子树 -> 右子树 -> 根节点):
```python
def post_order_traversal(node):
if node is not None:
post_order_traversal(node.left)
post_order_traversal(node.right)
print(node.val)
```
实验要求部分,你可以按照上述代码来完成,先创建二叉树,然后分别执行前序、中序和后序遍历,并打印出每个节点的值。
阅读全文