输入10个不同的整数 ,依次插入到一颗初始为空的二叉排序树中,并对其进行中序遍历,以验证树的正确性用c编写
时间: 2024-02-13 08:05:46 浏览: 18
好的,以下是用 C 语言编写的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉排序树的结构体
typedef struct BSTNode {
int val;
struct BSTNode *left;
struct BSTNode *right;
} BSTNode;
// 插入节点
BSTNode *insert(BSTNode *root, int val) {
if (root == NULL) {
BSTNode *node = (BSTNode *)malloc(sizeof(BSTNode));
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 inorder(BSTNode *root) {
if (root == NULL) {
return;
}
inorder(root->left);
printf("%d ", root->val);
inorder(root->right);
}
int main() {
int vals[10] = {3, 2, 1, 4, 5, 7, 6, 8, 0, 9}; // 输入的整数
BSTNode *root = NULL;
for (int i = 0; i < 10; i++) {
root = insert(root, vals[i]);
}
inorder(root);
printf("\n");
return 0;
}
```
这段代码定义了一个二叉排序树的结构体 BSTNode,包含一个值 val,以及左右子树的指针 left 和 right。插入节点的函数 insert 会根据节点的值递归地寻找插入位置,并返回根节点。中序遍历函数 inorder 会按照左子树、根节点、右子树的顺序遍历树。
在 main 函数中,我们初始化一个空的二叉排序树 root,并依次插入输入的整数 vals[10]。最后调用中序遍历函数 inorder 输出排序后的结果。
希望这个代码对你有帮助!