使用C语言,创建一颗二叉查找树,将以下数据(100 45 67 32 12 4 8 90 87)插入到二叉树中; 并查找 32 是否在上面二叉树中,如果属于该树,返回 True;不属于该树,返回 False。 最后查找二叉树中的最大元素与最小元素。
时间: 2024-12-20 10:31:15 浏览: 5
在C语言中,我们可以使用结构体来表示二叉查找树(BST,Binary Search Tree)节点,并分别处理插入、查找和获取最小/最大元素的操作。这里是一个简单的实现步骤:
首先,定义一个二叉树节点结构:
```c
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} TreeNode;
```
接下来,我们编写函数来完成操作:
1. 插入数据到二叉查找树:
```c
TreeNode* insert(TreeNode** root, int value) {
if (*root == NULL) {
*root = (TreeNode*)malloc(sizeof(TreeNode));
(*root)->data = value;
(*root)->left = (*root)->right = NULL;
} else if (value < (*root)->data) {
insert(&(*root)->left, value);
} else {
insert(&(*root)->right, value);
}
return *root;
}
```
2. 查找特定值:
```c
int search(TreeNode* root, int value) {
if (root == NULL || root->data == value) {
return (root != NULL);
} else if (value < root->data) {
return search(root->left, value);
} else {
return search(root->right, value);
}
}
```
3. 获取最小/最大元素:
```c
int get_min_max(TreeNode* root, int* min_val, int* max_val) {
if (root == NULL) {
return 0;
}
if (*min_val == 0 || root->data < *min_val) {
*min_val = root->data;
}
if (*max_val == 0 || root->data > *max_val) {
*max_val = root->data;
}
return get_min_max(root->left, min_val, max_val)
+ get_min_max(root->right, min_val, max_val);
}
```
现在,你可以按照以下步骤使用这些函数:
```c
// 初始化根节点
TreeNode* root = NULL;
// 将给定数据插入树
data[] = {100, 45, 67, 32, 12, 4, 8, 90, 87};
for (int i = 0; i < sizeof(data)/sizeof(data[0]); ++i) {
root = insert(&root, data[i]);
}
// 检查32是否存在于树中
int found_32 = search(root, 32);
// 获取最小和最大元素
int min_value, max_value;
get_min_max(root, &min_value, &max_value);
// 输出结果
printf("32 is in the tree: %d\n", found_32);
printf("Minimum element: %d\n", min_value);
printf("Maximum element: %d\n", max_value);
```
记得在实际应用中处理内存分配和释放。
阅读全文