C语言用递归实现二叉树中序遍历
时间: 2023-07-18 17:35:51 浏览: 107
二叉树的中序遍历递归实现比较简单,具体步骤如下:
1. 对当前节点的左子树进行中序遍历。
2. 访问当前节点。
3. 对当前节点的右子树进行中序遍历。
下面是该算法的C语言实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 结点结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 二叉树的中序遍历递归实现
void inorderTraversal(TreeNode *root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
// 测试
int main() {
TreeNode *root = (TreeNode *)malloc(sizeof(TreeNode));
root->val = 1;
root->left = (TreeNode *)malloc(sizeof(TreeNode));
root->left->val = 2;
root->right = (TreeNode *)malloc(sizeof(TreeNode));
root->right->val = 3;
root->left->left = NULL;
root->left->right = (TreeNode *)malloc(sizeof(TreeNode));
root->left->right->val = 4;
root->left->right->left = (TreeNode *)malloc(sizeof(TreeNode));
root->left->right->left->val = 5;
root->left->right->left->left = NULL;
root->left->right->left->right = NULL;
root->left->right->right = NULL;
root->right->left = NULL;
root->right->right = (TreeNode *)malloc(sizeof(TreeNode));
root->right->right->val = 6;
root->right->right->left = NULL;
root->right->right->right = NULL;
inorderTraversal(root);
printf("\n");
return 0;
}
```
其中,TreeNode是结点的结构体。该算法的时间复杂度为O(n),空间复杂度为O(h),其中h为二叉树的高度。
阅读全文