c语言清空排序二叉树
时间: 2023-08-24 15:08:54 浏览: 98
要清空排序二叉树(Binary Search Tree,BST),可以执行以下步骤:
1. 创建一个函数,用于删除二叉树的节点。函数可以使用递归来实现。
2. 在删除函数中,首先检查当前节点是否为空。如果为空,则返回。
3. 如果当前节点不为空,递归地调用删除函数来删除左子树和右子树。
4. 释放当前节点的内存。
5. 在主程序中,调用删除函数,传入根节点来清空整个二叉树。
以下是一个示例代码,用于清空排序二叉树:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* left;
struct Node* right;
};
// 创建新节点
struct Node* createNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 删除二叉树节点
struct Node* deleteTree(struct Node* node) {
if (node == NULL) {
return NULL;
}
// 递归地删除左子树和右子树
node->left = deleteTree(node->left);
node->right = deleteTree(node->right);
// 释放当前节点的内存
free(node);
return NULL;
}
int main() {
struct Node* root = createNode(5);
root->left = createNode(3);
root->right = createNode(8);
root->left->left = createNode(2);
root->left->right = createNode(4);
root->right->left = createNode(6);
root->right->right = createNode(9);
// 清空二叉树
root = deleteTree(root);
if (root == NULL) {
printf("二叉树已清空\n");
} else {
printf("二叉树清空失败\n");
}
return 0;
}
```
上述代码中,我们创建了一个简单的排序二叉树,并使用 `deleteTree` 函数来清空它。最后,我们检查根节点是否为空来验证二叉树是否已经清空。
阅读全文