C语言实现任意输入一组数据作为二叉排序树中结点的键值,创建一棵二叉排序树,然后对给定的值进行查找。
时间: 2024-03-23 21:37:21 浏览: 86
好的,我来回答你的问题。
首先,我们需要了解二叉排序树的概念。二叉排序树,也叫二叉查找树,是一种特殊的二叉树,它的左子树中的所有结点都小于根结点,右子树中的所有结点都大于根结点。
接下来,我们可以按照以下步骤实现任意输入一组数据作为二叉排序树中结点的键值,创建一棵二叉排序树,然后对给定的值进行查找。
1. 定义二叉排序树的结点结构体
```
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
2. 实现二叉排序树的插入操作
```
void insert(TreeNode** root, int val) {
if (*root == NULL) {
*root = malloc(sizeof(TreeNode));
(*root)->val = val;
(*root)->left = NULL;
(*root)->right = NULL;
} else if (val < (*root)->val) {
insert(&((*root)->left), val);
} else if (val > (*root)->val) {
insert(&((*root)->right), val);
}
}
```
3. 创建二叉排序树
```
int main() {
TreeNode* root = NULL;
int n;
printf("请输入结点个数:");
scanf("%d", &n);
printf("请输入结点的键值:");
for (int i = 0; i < n; i++) {
int val;
scanf("%d", &val);
insert(&root, val);
}
return 0;
}
```
4. 实现二叉排序树的查找操作
```
bool search(TreeNode* root, int val) {
if (root == NULL) {
return false;
} else if (root->val == val) {
return true;
} else if (val < root->val) {
return search(root->left, val);
} else {
return search(root->right, val);
}
}
```
5. 在 main 函数中调用查找操作
```
int main() {
TreeNode* root = NULL;
int n;
printf("请输入结点个数:");
scanf("%d", &n);
printf("请输入结点的键值:");
for (int i = 0; i < n; i++) {
int val;
scanf("%d", &val);
insert(&root, val);
}
int target;
printf("请输入要查找的值:");
scanf("%d", &target);
if (search(root, target)) {
printf("找到了\n");
} else {
printf("没找到\n");
}
return 0;
}
```
以上就是 C 语言实现任意输入一组数据作为二叉排序树中结点的键值,创建一棵二叉排序树,然后对给定的值进行查找的完整代码。
阅读全文