写出 前序遍历 中序遍历 后序遍历的c语言代码
时间: 2024-06-20 10:01:05 浏览: 8
在C语言中,树的前序遍历、中序遍历和后序遍历是递归操作,这里我将为你提供基本的二叉树遍历算法的示例。假设我们有一个结构体`TreeNode`表示二叉树节点:
```c
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
```
### 前序遍历(根-左-右)
```c
void preorderTraversal(TreeNode* root) {
if (root == NULL) return;
printf("%d ", root->val); // 先访问根
preorderTraversal(root->left); // 再遍历左子树
preorderTraversal(root->right); // 最后遍历右子树
}
```
### 中序遍历(左-根-右)
```c
void inorderTraversal(TreeNode* root) {
if (root == NULL) return;
inorderTraversal(root->left); // 先遍历左子树
printf("%d ", root->val); // 再访问根
inorderTraversal(root->right); // 最后遍历右子树
}
```
### 后序遍历(左-右-根)
```c
void postorderTraversal(TreeNode* root) {
if (root == NULL) return;
postorderTraversal(root->left); // 先遍历左子树
postorderTraversal(root->right); // 再遍历右子树
printf("%d ", root->val); // 最后访问根
}
```
如果你想用迭代的方式实现,可以使用栈来辅助。对于每个版本的代码,记得在实际使用时处理边界情况和内存管理。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)