C语言编程实现二叉树的储存与先序,中序以及后序遍历
时间: 2024-10-26 10:16:43 浏览: 31
在C语言中,我们可以使用结构体来表示二叉树的节点,并结合递归的方式实现三种基本遍历方法:先序遍历、中序遍历和后序遍历。
首先,定义一个二叉树节点的结构体:
```c
typedef struct TreeNode {
int val; // 节点值
struct TreeNode* left; // 左孩子指针
struct TreeNode* right; // 右孩子指针
} TreeNode;
```
接下来分别讲解这三种遍历方法的实现:
1. **先序遍历**(根-左-右):
- 定义一个函数,对于当前节点,打印值,然后递归地访问左子树和右子树。
```c
void preorderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val); // 先访问根节点
preorderTraversal(root->left);
preorderTraversal(root->right);
}
}
```
2. **中序遍历**(左-根-右):
- 顺序访问左子树,然后当前节点,最后访问右子树。
```c
void inorderTraversal(TreeNode* root) {
if (root != NULL) {
inorderTraversal(root->left);
printf("%d ", root->val); // 中间访问根节点
inorderTraversal(root->right);
}
}
```
3. **后序遍历**(左-右-根):
- 首先访问左子树和右子树,最后访问根节点。
```c
void postorderTraversal(TreeNode* root) {
if (root != NULL) {
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->val); // 最后访问根节点
}
}
```
阅读全文