C语言递归建立二叉树,递归输出先序、中序和后序遍历的结果
时间: 2024-12-23 22:19:36 浏览: 1
在C语言中,递归是一种常用的技术来构建二叉树,并对其进行遍历。首先,我们需要定义一个结构体表示二叉树节点:
```c
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
接下来,我们编写递归函数来创建二叉树并实现三种遍历方式:
1. **构造二叉树** (假设有一个数组存储了二叉树的值)
```c
TreeNode* buildTree(int arr[], int start, int end) {
if (start > end) return NULL; // 根节点为空
TreeNode* root = malloc(sizeof(TreeNode));
root->val = arr[start];
int mid = (start + end) / 2; // 计算中间位置
root->left = buildTree(arr, start, mid - 1); // 递归左子树
root->right = buildTree(arr, mid, end); // 递归右子树
return root;
}
```
2. **先序遍历** (根-左-右)
```c
void preorderTraversal(TreeNode* root) {
if (root == NULL) return;
printf("%d ", root->val); // 输出当前节点
preorderTraversal(root->left);
preorderTraversal(root->right);
}
```
3. **中序遍历** (左-根-右)
```c
void inorderTraversal(TreeNode* root) {
if (root == NULL) return;
inorderTraversal(root->left);
printf("%d ", root->val); // 输出当前节点
inorderTraversal(root->right);
}
```
4. **后序遍历** (左-右-根)
```c
void postorderTraversal(TreeNode* root) {
if (root == NULL) return;
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->val); // 输出当前节点
}
```
记得,在实际应用中,你需要根据具体的数组结构和二叉树数据来调用`buildTree`函数,然后分别调用上述三个遍历函数来得到结果。
阅读全文