用C语言摧毁二叉排序树
时间: 2023-12-12 12:32:31 浏览: 30
要摧毁一个二叉排序树,可以使用后序遍历的方式,从叶子节点开始逐步删除节点。具体步骤如下:
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
//定义二叉排序树的结构体
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;
}
```
以上代码中,我们首先定义了二叉排序树的结构体,包括数据域和左右子树指针。然后定义了一个插入节点的函数,该函数接收一个二叉排序树的根节点和要插入的数据。如果根节点为空,则新建一个节点作为根节点;如果插入的数据小于根节点的数据,则插入到左子树中;如果插入的数据大于等于根节点的数据,则插入到右子树中。最后返回根节点。
用c语言实现二叉排序树创建
二叉排序树是一种特殊的二叉树,它的左子树上所有结点的关键字均小于根结点的关键字,右子树上所有结点的关键字均大于根结点的关键字。在C语言中,可以通过结构体和指针来实现二叉排序树的创建。具体实现方法如下:
1.定义二叉排序树结点的结构体:
```
typedef struct BSTNode{
int key;
struct BSTNode *lchild, *rchild;
}BSTNode, *BSTree;
```
2.在二叉排序树中查找值为key的结点:
```
BSTNode *BST_Search(BSTree T, int key){
while(T!=NULL && key!=T->key){
if(key<T->key)
T=T->lchild;
else
T=T->rchild;
}
return T;
}
```
3.在二叉排序树中插入关键字为k的新结点:
```
int BST_Insert(BSTree &T, int k){
if(T==NULL){
T=(BSTree)malloc(sizeof(BSTNode));
T->key=k;
T->lchild=T->rchild=NULL;
return 1;
}
else if(k==T->key)
return 0;
else if(k<T->key)
return BST_Insert(T->lchild, k);
else
return BST_Insert(T->rchild, k);
}
```
4.按照str[]中的关键字序列建立二叉排序树:
```
void Creat_BST(BSTree &T, int str[], int n){
T=NULL;
int i=0;
while(i<n){
BST_Insert(T,str[i]);
i++;
}
}
```