数据结构二叉树的基本操作及利用c语言实现
时间: 2023-11-12 07:06:53 浏览: 94
数据结构-二叉树的基本操作
二叉树是一种重要的数据结构,它有多种基本操作,包括创建二叉树、插入节点、删除节点、查找节点等。以下是二叉树的基本操作及使用 C 语言实现:
1. 创建二叉树
创建二叉树的基本思路是:先创建根节点,然后递归地创建左右子树。以下是实现代码:
```c
// 定义二叉树结构体
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建二叉树
TreeNode* createTree(int val) {
TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = val;
root->left = NULL;
root->right = NULL;
return root;
}
```
2. 插入节点
插入节点的基本思路是:先找到插入的位置,然后插入节点。以下是实现代码:
```c
// 插入节点
void insert(TreeNode* root, int val) {
if (root == NULL) {
root = createTree(val);
} else if (val < root->val) {
if (root->left == NULL) {
root->left = createTree(val);
} else {
insert(root->left, val);
}
} else {
if (root->right == NULL) {
root->right = createTree(val);
} else {
insert(root->right, val);
}
}
}
```
3. 删除节点
删除节点的基本思路是:先找到待删除的节点,然后判断该节点的子树情况,分三种情况进行处理。以下是实现代码:
```c
// 删除节点
TreeNode* delete(TreeNode* root, int val) {
if (root == NULL) {
return NULL;
}
if (val < root->val) {
root->left = delete(root->left, val);
} else if (val > root->val) {
root->right = delete(root->right, val);
} else {
if (root->left == NULL && root->right == NULL) {
free(root);
return NULL;
} else if (root->left == NULL) {
TreeNode* temp = root->right;
free(root);
return temp;
} else if (root->right == NULL) {
TreeNode* temp = root->left;
free(root);
return temp;
} else {
TreeNode* temp = root->right;
while (temp->left != NULL) {
temp = temp->left;
}
root->val = temp->val;
root->right = delete(root->right, temp->val);
}
}
return root;
}
```
4. 查找节点
查找节点的基本思路是:从根节点开始,递归地搜索左右子树,直到找到目标节点或者到达叶子节点。以下是实现代码:
```c
// 查找节点
TreeNode* search(TreeNode* root, int val) {
if (root == NULL) {
return NULL;
}
if (root->val == val) {
return root;
} else if (val < root->val) {
return search(root->left, val);
} else {
return search(root->right, val);
}
}
```
以上是二叉树的基本操作及使用 C 语言实现的代码。需要注意的是,这里的代码仅仅是示例代码,实际使用时需要根据具体需求进行修改和优化。
阅读全文