基于c语言 任意输入一组数据作为二叉排序树中结点的键值,创建一棵二叉排序树,然后对给定的值进行查找。
时间: 2024-02-26 08:58:52 浏览: 32
好的,我会尽力回答你的问题。
首先,我们需要定义二叉排序树的结构体:
```c
typedef struct node
{
int key;
struct node *left;
struct node *right;
} Node;
```
接下来,我们可以编写一个函数来创建二叉排序树:
```c
Node *createBST(Node *root, int key)
{
if (root == NULL) // 如果当前节点为空,则创建新节点
{
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->key = key;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
if (key < root->key) // 如果键值小于当前节点的键值,则插入到左子树
{
root->left = createBST(root->left, key);
}
else if (key > root->key) // 如果键值大于当前节点的键值,则插入到右子树
{
root->right = createBST(root->right, key);
}
return root;
}
```
然后,我们可以写一个函数来查找给定值:
```c
Node *searchBST(Node *root, int key)
{
if (root == NULL || root->key == key) // 如果当前节点为空或者键值等于给定值,则返回当前节点
{
return root;
}
if (key < root->key) // 如果给定值小于当前节点的键值,则在左子树中查找
{
return searchBST(root->left, key);
}
else // 如果给定值大于等于当前节点的键值,则在右子树中查找
{
return searchBST(root->right, key);
}
}
```
最后,我们可以编写一个主函数来测试代码:
```c
int main()
{
Node *root = NULL;
int n, key, searchKey;
printf("请输入节点个数:");
scanf("%d", &n);
printf("请输入节点的键值:");
for (int i = 0; i < n; i++)
{
scanf("%d", &key);
root = createBST(root, key);
}
printf("请输入要查找的键值:");
scanf("%d", &searchKey);
Node *result = searchBST(root, searchKey);
if (result == NULL)
{
printf("未找到该键值!\n");
}
else
{
printf("找到了该键值:%d\n", result->key);
}
return 0;
}
```
这样,我们就完成了基于 C 语言的二叉排序树的创建和查找操作。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)