设计一个c代码实现以下功能:输入10个不同整数,依次插入到一颗初始为空的二叉排序树中,然后进行中序遍历,以验证树的正确性
时间: 2024-03-24 09:38:09 浏览: 42
c代码-二叉树的建立以及先序、中序、后序遍历C语言实现
5星 · 资源好评率100%
好的,以下是一个 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int val;
struct Node* left;
struct Node* right;
};
struct BST {
struct Node* root;
};
struct Node* createNode(int val) {
struct Node* node = (struct Node*)malloc(sizeof(struct Node));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
void insert(struct BST* bst, int val) {
if (bst->root == NULL) {
bst->root = createNode(val);
return;
}
struct Node* curr = bst->root;
while (1) {
if (val < curr->val) {
if (curr->left == NULL) {
curr->left = createNode(val);
return;
}
curr = curr->left;
} else {
if (curr->right == NULL) {
curr->right = createNode(val);
return;
}
curr = curr->right;
}
}
}
void inorder(struct Node* node) {
if (node == NULL) {
return;
}
inorder(node->left);
printf("%d ", node->val);
inorder(node->right);
}
int main() {
struct BST bst = {NULL};
int nums[10];
printf("请输入10个不同的整数:");
for (int i = 0; i < 10; i++) {
scanf("%d", &nums[i]);
}
for (int i = 0; i < 10; i++) {
insert(&bst, nums[i]);
}
inorder(bst.root);
return 0;
}
```
这个代码定义了一个 `Node` 结构体来表示二叉排序树中的节点,每个节点包含一个值 `val`,以及左右子节点 `left` 和 `right`。还定义了一个 `BST` 结构体来表示二叉排序树,其中包含一个根节点 `root`,以及 `insert` 和 `inorder` 两个函数。`createNode` 函数用于创建一个新节点,`insert` 函数用于将一个新的值插入到二叉排序树中,`inorder` 函数用于对树进行中序遍历并输出结果。
在 `main` 函数中,我们首先读取用户输入的10个不同整数,并将它们插入到二叉排序树中。然后,调用 `inorder` 函数对树进行中序遍历,输出结果。如果输出结果是按照从小到大的顺序输出这10个整数,那么说明二叉排序树的构建和遍历都是正确的。
阅读全文