C语言实现插入数据元素后,输出其中序遍历结果
时间: 2024-02-15 18:04:58 浏览: 26
好的,下面是C语言的实现示例。同样的,我们需要定义一个二叉树结构体和插入函数,以及中序遍历函数。
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 插入节点
TreeNode* insert(TreeNode* root, int val) {
if (root == NULL) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
if (val < root->val) {
root->left = insert(root->left, val);
} else {
root->right = insert(root->right, val);
}
return root;
}
// 中序遍历
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
int main() {
TreeNode* root = NULL;
int elements[] = {5, 2, 1, 6, 8, 3, 7, 4, 9};
int length = sizeof(elements) / sizeof(elements[0]);
for (int i = 0; i < length; i++) {
root = insert(root, elements[i]);
}
inorderTraversal(root);
return 0;
}
```
在这个示例代码中,我们首先定义了一个二叉树结构体 `TreeNode`,包含了节点的值以及左右子节点指针。然后定义了插入函数 `insert`,同样使用递归的方式实现。如果当前节点为空,就新建一个节点,并返回;否则根据插入值的大小来递归插入到左子树或右子树中。
接着定义了中序遍历函数 `inorderTraversal`,同样使用递归的方式来实现,先遍历左子树,然后输出当前节点的值,最后遍历右子树。
在 `main` 函数中,我们先创建一个空的根节点,然后逐个插入数据元素。最终,我们调用 `inorderTraversal` 函数对树进行中序遍历,并将结果输出到控制台上。
希望这个示例代码能够帮助您理解如何在C语言中插入数据元素并输出其中序遍历结果!