先依次输入元素为简单类型的数个数据元素建立二叉链表存储的二叉排序树;然后在此二叉排序树上进行元素查找。
时间: 2024-03-03 13:47:58 浏览: 83
好的,我会依次回答您的问题。
首先,构建二叉排序树的过程如下:
1. 定义二叉排序树的结构体
```
typedef struct BSTNode {
int data;
struct BSTNode *left;
struct BSTNode *right;
} BSTNode, *BSTree;
```
2. 定义插入节点的函数
```
void insertBST(BSTree *T, int key) {
if (*T == NULL) {
*T = (BSTNode*)malloc(sizeof(BSTNode));
(*T)->data = key;
(*T)->left = (*T)->right = NULL;
} else {
if (key < (*T)->data) {
insertBST(&((*T)->left), key);
} else if (key > (*T)->data) {
insertBST(&((*T)->right), key);
}
}
}
```
3. 依次输入数据元素,插入二叉排序树中
```
int main() {
BSTree T = NULL;
int n, key;
printf("请输入数据元素个数n:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个元素:", i+1);
scanf("%d", &key);
insertBST(&T, key);
}
printf("二叉排序树构建完成!\n");
return 0;
}
```
接下来,对于二叉排序树的元素查找,可以采用递归的方式进行。具体实现如下:
```
BSTNode* searchBST(BSTree T, int key) {
if (T == NULL || T->data == key) {
return T;
} else if (key < T->data) {
return searchBST(T->left, key);
} else {
return searchBST(T->right, key);
}
}
```
在主函数中调用该函数进行查找即可,如下:
```
int main() {
// 构建二叉排序树的代码
// ...
int key;
printf("请输入要查找的元素:");
scanf("%d", &key);
BSTNode *p = searchBST(T, key);
if (p) {
printf("元素%d在二叉排序树中!\n", key);
} else {
printf("元素%d不在二叉排序树中!\n", key);
}
return 0;
}
```
希望能够解决您的问题!
阅读全文