利用先序遍历方法创建一棵二叉树(存储:二叉链表),利用递归,先序遍历一个二叉树,输出其遍历结果。利用递归,中序遍历一个二叉树,输出其遍历结果。利用递归,后序遍历一个二叉树,输出其遍历结果。c语言
时间: 2024-12-17 07:40:18 浏览: 6
在C语言中,我们可以使用递归的方式来实现二叉树的三种基本遍历——先序、中序和后序。这里我会给出基本的函数结构,假设二叉树节点定义如下:
```c
typedef struct TreeNode {
int val; // 节点值
struct TreeNode* left; // 左子节点指针
struct TreeNode* right; // 右子节点指针
} TreeNode;
```
**先序遍历(根-左-右)**:
```c
void preorderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val); // 先访问根节点
preorderTraversal(root->left); // 然后递归左子树
preorderTraversal(root->right); // 最后递归右子树
}
}
```
**中序遍历(左-根-右)**:
```c
void inorderTraversal(TreeNode* root) {
if (root != NULL) {
inorderTraversal(root->left); // 首先递归左子树
printf("%d ", root->val); // 然后访问根节点
inorderTraversal(root->right); // 最后递归右子树
}
}
```
**后序遍历(左-右-根)**:
```c
void postorderTraversal(TreeNode* root) {
if (root != NULL) {
postorderTraversal(root->left); // 首先递归左子树
postorderTraversal(root->right); // 接着递归右子树
printf("%d ", root->val); // 最后访问根节点
}
}
```
你可以根据需要调用这些函数,并传入二叉树的根节点。记得处理空树的情况,避免访问NULL导致程序崩溃。
阅读全文