动态二进制树形搜索算法C语言实现
时间: 2023-08-31 21:27:00 浏览: 83
动态二进制树形搜索算法是一种高效的搜索算法,可以在大规模数据集中快速查找目标值。C语言实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
void insert(TreeNode** root, int val) {
if (*root == NULL) {
*root = (TreeNode*) malloc(sizeof(TreeNode));
(*root)->val = val;
(*root)->left = NULL;
(*root)->right = NULL;
} else if (val < (*root)->val) {
insert(&((*root)->left), val);
} else {
insert(&((*root)->right), val);
}
}
int search(TreeNode* root, int val) {
if (root == NULL) {
return 0;
} else if (root->val == val) {
return 1;
} else if (val < root->val) {
return search(root->left, val);
} else {
return search(root->right, val);
}
}
int main() {
TreeNode* root = NULL;
insert(&root, 5);
insert(&root, 3);
insert(&root, 7);
insert(&root, 1);
insert(&root, 4);
insert(&root, 6);
insert(&root, 8);
int val = 6;
if (search(root, val)) {
printf("%d is found.\n", val);
} else {
printf("%d is not found.\n", val);
}
return 0;
}
```
在这个实现中,我们定义了一个 `TreeNode` 结构体,用于表示二叉树节点。`insert` 函数用于将给定的值插入到二叉树中,并按照大小关系递归地插入到左子树或右子树中。`search` 函数用于在二叉树中查找给定的值,如果找到了就返回 1,否则返回 0。
在 `main` 函数中,我们创建了一个二叉树,并在其中插入了一些值。然后,我们使用 `search` 函数查找值为 6 的节点,如果找到了就输出“6 is found.”,否则输出“6 is not found.”。