用C语言摧毁二叉排序树
时间: 2023-12-12 12:32:31 浏览: 91
要摧毁一个二叉排序树,可以使用后序遍历的方式,从叶子节点开始逐步删除节点。具体步骤如下:
1. 从叶子节点开始,如果该节点有左右子树,则先递归删除左右子树。
2. 删除该节点。
3. 重复步骤1和2,直到整棵树被删除。
以下是C语言代码实现:
```c
void destroyBST(BST *root) {
if (root == NULL) {
return;
}
destroyBST(root->lchild);
destroyBST(root->rchild);
free(root);
}
```
相关问题
用c语言实现二叉排序树
二叉排序树是一种特殊的二叉树,它满足以下性质:
- 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
- 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
- 它的左、右子树也分别为二叉排序树。
下面是用 C 语言实现二叉排序树的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉排序树的结点结构
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
// 创建一个新结点
struct TreeNode *createNode(int val) {
struct TreeNode *node = (struct TreeNode *)malloc(sizeof(struct TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 向二叉排序树中插入一个新结点
struct TreeNode *insertNode(struct TreeNode *root, int val) {
if (root == NULL) {
// 如果树为空,则新结点即为根结点
return createNode(val);
}
if (val < root->val) {
// 如果新值小于当前结点的值,则插入左子树
root->left = insertNode(root->left, val);
} else if (val > root->val) {
// 如果新值大于当前结点的值,则插入右子树
root->right = insertNode(root->right, val);
}
// 如果新值等于当前结点的值,则不做任何操作
return root;
}
// 中序遍
用c语言实现二叉排序树插入
可以按照以下步骤使用C语言实现二叉排序树的插入:
```c
//定义二叉排序树的结构体
typedef struct BSTNode{
int data;
struct BSTNode *left;
struct BSTNode *right;
}BSTNode;
//插入节点的函数
BSTNode* insertBST(BSTNode *root, int data){
//如果根节点为空,则新建一个节点作为根节点
if(root == NULL){
root = (BSTNode*)malloc(sizeof(BSTNode));
root->data = data;
root->left = NULL;
root->right = NULL;
}
//如果插入的数据小于根节点的数据,则插入到左子树中
else if(data < root->data){
root->left = insertBST(root->left, data);
}
//如果插入的数据大于等于根节点的数据,插入到右子树中
else{
root->right = insertBST(root->right, data);
}
return root;
}
```
以上代码中,我们首先定义了二叉排序树的结构体,包括数据域和左右子树指针。然后定义了一个插入节点的函数,该函数接收一个二叉排序树的根节点和要插入的数据。如果根节点为空,则新建一个节点作为根节点;如果插入的数据小于根节点的数据,则插入到左子树中;如果插入的数据大于等于根节点的数据,则插入到右子树中。最后返回根节点。
阅读全文