任意输入一组数据作为二叉排序树中结点的键值,创建一棵二叉排序树,然后对给定的值进行查找的代码用c语言实现
时间: 2024-02-22 12:56:09 浏览: 75
好的,以下是创建二叉排序树并查找给定值的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉排序树的结点
struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
};
// 创建二叉排序树
struct TreeNode* createBST(int* nums, int numsSize) {
if (numsSize == 0) {
return NULL;
}
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = nums[0];
root->left = NULL;
root->right = NULL;
int i;
for (i = 1; i < numsSize; i++) {
insertNode(root, nums[i]);
}
return root;
}
// 插入结点
struct TreeNode* insertNode(struct TreeNode* root, int val) {
if (!root) {
struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
if (val < root->val) {
root->left = insertNode(root->left, val);
} else {
root->right = insertNode(root->right, val);
}
return root;
}
// 查找给定值
struct TreeNode* searchBST(struct TreeNode* root, int val) {
if (!root) {
return NULL;
}
if (root->val == val) {
return root;
} else if (val < root->val) {
return searchBST(root->left, val);
} else {
return searchBST(root->right, val);
}
}
int main() {
// 测试代码
int nums[] = {5, 3, 7, 1, 4, 6, 8};
int numsSize = sizeof(nums) / sizeof(int);
struct TreeNode* root = createBST(nums, numsSize);
// 查找值为 4 的结点
struct TreeNode* node = searchBST(root, 4);
if (node) {
printf("%d\n", node->val);
} else {
printf("Not found.\n");
}
return 0;
}
```
这段代码同样定义了二叉排序树的结点,并实现了创建二叉排序树、插入结点和查找给定值的函数。然后我们随便输入一组数据作为二叉排序树中结点的键值,创建一棵二叉排序树,并查找给定的值(这里是 4)。最终输出找到的结点的值或提示未找到。注意,由于 C 语言没有自带的动态数组,我们需要手动传入数组长度。
阅读全文