递归方式实现二叉树的中序遍历,给出一个完整的具体c语言编程代码
时间: 2023-11-20 09:05:55 浏览: 35
好的,以下是一个递归方式实现二叉树的中序遍历的C语言代码:
```c
#include<stdio.h>
#include<stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
void inorderTraversal(struct TreeNode* root){
if(root == NULL) return;
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
int main(){
// 构建二叉树
struct TreeNode* t1 = (struct TreeNode*)malloc(sizeof(struct TreeNode));
struct TreeNode* t2 = (struct TreeNode*)malloc(sizeof(struct TreeNode));
struct TreeNode* t3 = (struct TreeNode*)malloc(sizeof(struct TreeNode));
struct TreeNode* t4 = (struct TreeNode*)malloc(sizeof(struct TreeNode));
struct TreeNode* t5 = (struct TreeNode*)malloc(sizeof(struct TreeNode));
t1->val = 1;
t2->val = 2;
t3->val = 3;
t4->val = 4;
t5->val = 5;
t1->left = t2;
t1->right = t3;
t2->left = t4;
t2->right = t5;
t3->left = NULL;
t3->right = NULL;
t4->left = NULL;
t4->right = NULL;
t5->left = NULL;
t5->right = NULL;
// 中序遍历
inorderTraversal(t1);
return 0;
}
```
在这个示例代码中,我们首先定义了一个 `TreeNode` 的结构体,表示二叉树的节点。然后,我们使用 `inorderTraversal` 函数进行中序遍历,该函数接受一个二叉树的根节点作为参数。在函数中,我们首先递归遍历左子树,然后输出当前节点的值,最后递归遍历右子树。最后,我们在 `main` 函数中构建了一个二叉树,并对其进行中序遍历。输出结果为 `4 2 5 1 3`。