任意输入一组数据作为二叉排序树中结点的键值,创建一棵二叉排序树,然后对给定的值进行查找。c
时间: 2024-02-01 18:13:28 浏览: 82
以下是一个简单的二叉排序树的实现,用于创建和查找:
```
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *left;
struct node *right;
};
// 创建新节点
struct node* newNode(int item)
{
struct node* temp
= (struct node*)malloc(sizeof(struct node));
temp->data = item;
temp->left = temp->right = NULL;
return temp;
}
// 插入节点
struct node* insert(struct node* node, int data)
{
if (node == NULL)
return newNode(data);
if (data < node->data)
node->left = insert(node->left, data);
else if (data > node->data)
node->right = insert(node->right, data);
return node;
}
// 查找节点
struct node* search(struct node* root, int data)
{
if (root == NULL || root->data == data)
return root;
if (root->data < data)
return search(root->right, data);
return search(root->left, data);
}
// 测试
int main()
{
struct node* root = NULL;
int n, x, i;
printf("请输入二叉排序树的节点数:");
scanf("%d", &n);
printf("请输入每个节点的键值:");
for (i = 0; i < n; i++) {
scanf("%d", &x);
root = insert(root, x);
}
printf("请输入要查找的键值:");
scanf("%d", &x);
struct node* result = search(root, x);
if (result != NULL)
printf("找到了节点 %d\n", result->data);
else
printf("未找到节点 %d\n", x);
return 0;
}
```
运行程序后,先输入二叉排序树的节点数,再输入每个节点的键值,最后输入要查找的键值。程序会输出查找结果,找到了则输出节点的键值,未找到则输出未找到的键值。
阅读全文