C语言二叉树的先序中序后序的递归遍历算法
时间: 2024-12-02 10:18:43 浏览: 29
C语言中,二叉树的遍历通常有三种基本方式:先序遍历、中序遍历和后序遍历,它们都是通过递归的方式来实现的。
**1. 先序遍历(Preorder Traversal):**
- 根节点 -> 左子树 -> 右子树
递归函数一般形式如下:
```c
void preorder(struct TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val); // 访问根节点
preorder(root->left); // 递归左子树
preorder(root->right); // 递归右子树
}
}
```
**2. 中序遍历(Inorder Traversal):**
- 左子树 -> 根节点 -> 右子树
递归函数:
```c
void inorder(struct TreeNode* root) {
if (root != NULL) {
inorder(root->left); // 递归左子树
printf("%d ", root->val); // 访问根节点
inorder(root->right); // 递归右子树
}
}
```
**3. 后序遍历(Postorder Traversal):**
- 左子树 -> 右子树 -> 根节点
递归函数:
```c
void postorder(struct TreeNode* root) {
if (root != NULL) {
postorder(root->left); // 递归左子树
postorder(root->right); // 递归右子树
printf("%d ", root->val); // 访问根节点
}
}
```
在以上代码中,`struct TreeNode`是一个假设存在的二叉树结点结构体,包含`val`表示节点值,`left`和`right`分别指向左子树和右子树。
阅读全文