二叉查找树的基本操作C语言
时间: 2023-07-04 13:11:12 浏览: 42
二叉查找树的基本操作包括插入、删除、查找、遍历等。
以下是基本操作的C语言实现:
1. 插入操作:
```c
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;
return;
}
if (val < (*root)->val) {
insert(&((*root)->left), val);
} else {
insert(&((*root)->right), val);
}
}
```
2. 删除操作:
```c
void delete(TreeNode **root, int val) {
if (*root == NULL) {
return;
}
if (val < (*root)->val) {
delete(&((*root)->left), val);
} else if (val > (*root)->val) {
delete(&((*root)->right), val);
} else {
if ((*root)->left == NULL) {
TreeNode *temp = *root;
*root = (*root)->right;
free(temp);
} else if ((*root)->right == NULL) {
TreeNode *temp = *root;
*root = (*root)->left;
free(temp);
} else {
TreeNode *temp = (*root)->right;
while (temp->left != NULL) {
temp = temp->left;
}
(*root)->val = temp->val;
delete(&((*root)->right), temp->val);
}
}
}
```
3. 查找操作:
```c
TreeNode* search(TreeNode *root, int val) {
if (root == NULL || root->val == val) {
return root;
}
if (val < root->val) {
return search(root->left, val);
} else {
return search(root->right, val);
}
}
```
4. 遍历操作:
```c
void inorderTraversal(TreeNode *root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
```
以上是二叉查找树的基本操作C语言实现,你可以根据需要修改代码。