c语言实现建立一棵二叉排序树,对它进行查找、插入、删除等操作
时间: 2023-08-11 22:08:31 浏览: 59
好的,下面是C语言实现建立一棵二叉排序树,以及对它进行查找、插入、删除等操作的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *left;
struct node *right;
} Node;
Node* create_node(int data) {
Node *n = (Node*)malloc(sizeof(Node));
n->data = data;
n->left = NULL;
n->right = NULL;
return n;
}
void insert_node(Node **root, int data) {
if (*root == NULL) {
*root = create_node(data);
return;
}
if (data < (*root)->data) {
insert_node(&(*root)->left, data);
} else {
insert_node(&(*root)->right, data);
}
}
Node* find_min_node(Node *root) {
while (root->left != NULL) {
root = root->left;
}
return root;
}
void delete_node(Node **root, int data) {
if (*root == NULL) {
return;
}
if (data < (*root)->data) {
delete_node(&(*root)->left, data);
} else if (data > (*root)->data) {
delete_node(&(*root)->right, data);
} else {
if ((*root)->left == NULL && (*root)->right == NULL) {
free(*root);
*root = NULL;
} else if ((*root)->left == NULL) {
Node *temp = *root;
*root = (*root)->right;
free(temp);
} else if ((*root)->right == NULL) {
Node *temp = *root;
*root = (*root)->left;
free(temp);
} else {
Node *temp = find_min_node((*root)->right);
(*root)->data = temp->data;
delete_node(&(*root)->right, temp->data);
}
}
}
void inorder_traversal(Node *root) {
if (root != NULL) {
inorder_traversal(root->left);
printf("%d ", root->data);
inorder_traversal(root->right);
}
}
int main() {
Node *root = NULL;
insert_node(&root, 5);
insert_node(&root, 3);
insert_node(&root, 7);
insert_node(&root, 1);
insert_node(&root, 4);
insert_node(&root, 6);
insert_node(&root, 8);
printf("Inorder traversal before deletion: ");
inorder_traversal(root);
printf("\n");
delete_node(&root, 5);
printf("Inorder traversal after deletion: ");
inorder_traversal(root);
printf("\n");
return 0;
}
```
以上代码实现了二叉排序树的创建、查找、插入和删除操作,并进行了中序遍历输出。你可以根据需要进行修改和扩展。
相关推荐
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)