已知一维数组buffer,请用C语言对其进行二叉树查找
时间: 2024-05-13 22:14:11 浏览: 108
数据结构C语言版二叉树及其查找结构
二叉树查找的基本思路是:将数组中的元素插入到一个二叉查找树中,然后在树中进行查找。
以下是用C语言实现二叉树查找的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node* left;
struct node* right;
} Node;
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
Node* insert(Node* root, int data) {
if (root == NULL) {
return createNode(data);
}
if (data < root->data) {
root->left = insert(root->left, data);
} else if (data > root->data) {
root->right = insert(root->right, data);
}
return root;
}
Node* search(Node* root, int data) {
if (root == NULL || root->data == data) {
return root;
}
if (data < root->data) {
return search(root->left, data);
} else {
return search(root->right, data);
}
}
int main() {
int buffer[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int n = sizeof(buffer) / sizeof(buffer[0]);
Node* root = NULL;
for (int i = 0; i < n; i++) {
root = insert(root, buffer[i]);
}
int target = 5;
Node* result = search(root, target);
if (result == NULL) {
printf("%d not found\n", target);
} else {
printf("%d found\n", target);
}
return 0;
}
```
上述代码中,我们定义了一个结构体`node`表示二叉树的节点,其中包括一个整数`data`和两个指向左右子树的指针`left`和`right`。函数`createNode`用于创建新的节点,函数`insert`用于将一个元素插入到二叉查找树中,函数`search`用于在二叉查找树中查找一个元素。
在`main`函数中,我们首先定义了一个一维数组`buffer`,然后将数组中的元素插入到一个二叉查找树中。最后,我们以`5`为例,在树中查找该元素,并输出查找结果。
注意,二叉查找树的插入和查找操作的时间复杂度都为$O(log n)$,其中$n$为树中节点的数量。
阅读全文