二叉排序树查找及主程序代码
时间: 2023-07-20 13:42:11 浏览: 91
二叉排序树又称为二叉搜索树,它是一种特殊的二叉树,左子树上所有结点的值均小于它的根节点的值,右子树上所有结点的值均大于它的根节点的值,且左右子树都是二叉排序树。
二叉排序树的查找过程与二分查找类似,具体实现可以使用递归或者非递归的方式。
以下是二叉排序树的主程序代码示例:
```
#include <stdio.h>
#include <stdlib.h>
//定义二叉排序树结构体
typedef struct BSTNode {
int data;
struct BSTNode *left, *right;
} BSTNode;
//创建二叉排序树
BSTNode *createBST(BSTNode *root, int data) {
if (root == NULL) {
root = (BSTNode *) malloc(sizeof(BSTNode));
root->data = data;
root->left = root->right = NULL;
} else if (data < root->data) {
root->left = createBST(root->left, data);
} else if (data > root->data) {
root->right = createBST(root->right, data);
}
return root;
}
//二叉排序树查找
BSTNode *searchBST(BSTNode *root, int data) {
if (root == NULL || root->data == data) {
return root;
} else if (data < root->data) {
return searchBST(root->left, data);
} else {
return searchBST(root->right, data);
}
}
//主函数
int main() {
BSTNode *root = NULL;
int n, data, i;
//输入结点个数
printf("请输入结点个数:");
scanf("%d", &n);
//输入结点数据
printf("请输入结点数据:");
for (i = 0; i < n; i++) {
scanf("%d", &data);
root = createBST(root, data);
}
//输入待查找的数据
printf("请输入待查找的数据:");
scanf("%d", &data);
//查找
BSTNode *p = searchBST(root, data);
if (p == NULL) {
printf("未找到数据%d\n", data);
} else {
printf("已找到数据%d\n", data);
}
return 0;
}
```
以上代码实现了二叉排序树的创建和查找功能,可以根据需要进行修改和扩展。
阅读全文