二叉树的遍历 建立二叉树,然后实现:输出先序遍历、中序遍历、后序遍历的结果。 输入说明 第一行:结点个数n。 以下行:每行3个数,第一个是父亲,后两个依次为左右孩子,0表示空。
时间: 2024-11-16 22:20:07 浏览: 24
二叉树的遍历是一种访问树中所有节点的方式,常见的有三种基本方法:
1. **先序遍历**(Preorder Traversal):首先访问根节点,然后递归地遍历左子树,最后遍历右子树。这种顺序可以用递归表达式 `root -> left -> right` 来描述。
2. **中序遍历**(Inorder Traversal):首先遍历左子树,然后访问根节点,最后遍历右子树。对于排序好的二叉搜索树来说,这是升序排列节点的一种方法。顺序为 `left -> root -> right`。
3. **后序遍历**(Postorder Traversal):首先遍历左子树,接着遍历右子树,最后访问根节点。这对于计算表达式的值特别有用,因为它是先做操作的顺序。顺序为 `left -> right -> root`。
为了实现这个功能,你可以编写如下的伪代码(这里假设我们有一个名为Node的结构体,包含father(父节点),left和right指针):
```python
def build_tree(n, tree_data):
# 建立二叉树函数
pass
def preorder_traversal(root):
if root is not None:
print(root.val) # 先访问根节点
preorder_traversal(root.left) # 再遍历左子树
preorder_traversal(root.right) # 最后遍历右子树
def inorder_traversal(root):
if root is not None:
inorder_traversal(root.left)
print(root.val) # 中间访问根节点
inorder_traversal(root.right)
def postorder_traversal(root):
if root is not None:
postorder_traversal(root.left)
postorder_traversal(root.right)
print(root.val) # 最后访问根节点
# 读取输入并构建树
n = int(input())
tree_data = [list(map(int, input().split())) for _ in range(n)]
root = build_tree(n, tree_data)
# 打印遍历结果
print("先序遍历:", end=" ")
preorder_traversal(root)
print("\n中序遍历:", end=" ")
inorder_traversal(root)
print("\n后序遍历:", end=" ")
postorder_traversal(root)
```
阅读全文