用c语言采用二叉树递归遍历算法编程实现二叉树遍历(采用先序、中序和后序三遍历算法),用键盘输入二叉树
时间: 2024-10-27 10:02:17 浏览: 19
在C语言中,我们可以使用结构体来表示二叉树节点,并利用递归的方式实现先序(根-左-右)、中序(左-根-右)和后序(左-右-根)遍历。首先,我们需要定义二叉树节点的数据结构:
```c
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
接下来,我们分别编写三种遍历函数:
1. 先序遍历 (Preorder):
```c
void preorderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val); // 访问当前节点
preorderTraversal(root->left); // 递归遍历左子树
preorderTraversal(root->right); // 递归遍历右子树
}
}
```
2. 中序遍历 (Inorder):
```c
void inorderTraversal(TreeNode* root) {
if (root != NULL) {
inorderTraversal(root->left); // 递归遍历左子树
printf("%d ", root->val); // 访问当前节点
inorderTraversal(root->right); // 递归遍历右子树
}
}
```
3. 后序遍历 (Postorder):
```c
void postorderTraversal(TreeNode* root) {
if (root != NULL) {
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->val); // 访问当前节点
}
}
```
为了获取用户输入构建二叉树,你需要提供一个函数接收用户输入并创建节点,这通常需要额外的输入处理逻辑。你可以询问用户输入数字以及左、右孩子的索引等信息。
构建二叉树示例:
```c
// 用户输入部分(假设已有一个读取用户输入并构造树的函数buildTree())
TreeNode* inputTree = buildTree(); // 根据实际需求实现这个函数
```
完整的程序应该包含输入处理、构建二叉树和遍历功能的整合。
阅读全文