任意输入一组数据作为二叉排序树中结点的键值,创建一棵二叉排序树,然后对给定的值进行查找 C语言
时间: 2024-02-22 13:57:09 浏览: 68
好的,以下是创建二叉排序树并查找的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
//定义二叉排序树结点结构体
typedef struct BSTNode {
int key; //结点键值
struct BSTNode *left; //左子树指针
struct BSTNode *right; //右子树指针
} BSTNode;
//创建二叉排序树
BSTNode *createBST(int data[], int n) {
BSTNode *root = NULL;
for (int i = 0; i < n; i++) {
BSTNode *node = (BSTNode *)malloc(sizeof(BSTNode));
node->key = data[i];
node->left = NULL;
node->right = NULL;
if (root == NULL) {
root = node;
} else {
BSTNode *p = root;
while (1) {
if (node->key < p->key) {
if (p->left == NULL) {
p->left = node;
break;
} else {
p = p->left;
}
} else {
if (p->right == NULL) {
p->right = node;
break;
} else {
p = p->right;
}
}
}
}
}
return root;
}
//查找二叉排序树结点
BSTNode *searchBST(BSTNode *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);
}
}
int main() {
int data[] = {5, 3, 7, 2, 4, 6, 8}; //待插入数据
int n = sizeof(data) / sizeof(int);
BSTNode *root = createBST(data, n); //创建二叉排序树
int key = 4; //待查找结点键值
BSTNode *node = searchBST(root, key); //查找结点
if (node == NULL) {
printf("结点 %d 不存在!", key);
} else {
printf("结点 %d 存在!", key);
}
return 0;
}
```
运行结果为:
```
结点 4 存在!
```
这段代码会根据输入的数据创建一棵二叉排序树,然后查找给定的键值对应的结点。注意,这里的输入数据是写死在代码中的,如果要从用户输入中读取数据,可以使用scanf等函数。
阅读全文