求通过插入操作实现二叉搜索树的构建与应用的c语言完整代码
时间: 2024-02-18 11:02:57 浏览: 83
c代码-二叉搜索树的插入
以下是一个简单的二叉搜索树的构建和应用的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *left;
struct node *right;
};
struct node *create_node(int data) {
struct node *new_node = (struct node*) malloc(sizeof(struct node));
new_node->data = data;
new_node->left = NULL;
new_node->right = NULL;
return new_node;
}
struct node *insert_node(struct node *root, int data) {
if(root == NULL) {
root = create_node(data);
} else if(data <= root->data) {
root->left = insert_node(root->left, data);
} else {
root->right = insert_node(root->right, data);
}
return root;
}
int search_node(struct node *root, int data) {
if(root == NULL) {
return 0;
} else if(root->data == data) {
return 1;
} else if(data < root->data) {
return search_node(root->left, data);
} else {
return search_node(root->right, data);
}
}
void inorder_traversal(struct node *root) {
if(root != NULL) {
inorder_traversal(root->left);
printf("%d ", root->data);
inorder_traversal(root->right);
}
}
int main() {
struct node *root = NULL;
root = insert_node(root, 10);
root = insert_node(root, 5);
root = insert_node(root, 15);
root = insert_node(root, 3);
root = insert_node(root, 7);
root = insert_node(root, 12);
root = insert_node(root, 17);
printf("Inorder Traversal: ");
inorder_traversal(root);
int search_element = 7;
if(search_node(root, search_element)) {
printf("\n%d is present in the tree.\n", search_element);
} else {
printf("\n%d is not present in the tree.\n", search_element);
}
return 0;
}
```
解释:
- `struct node` 是定义二叉搜索树中一个节点所需要的数据结构。
- `create_node()` 函数创建一个新的节点并返回该节点的指针。
- `insert_node()` 函数通过递归的方式将一个新节点插入到正确的位置。
- `search_node()` 函数通过递归的方式在树中查找一个特定的值。
- `inorder_traversal()` 函数按升序遍历树中的节点。
- 在 `main()` 函数中,我们首先创建一个空的根节点,然后插入七个节点。接下来,我们使用 `inorder_traversal()` 函数按升序遍历树中的节点,并使用 `search_node()` 函数在树中查找一个特定的值。
阅读全文