二叉排序树的实现(部分功能
2021-02-12 11:16
标签:左右 oid let 根据 key值 arc arch 插入 不成功 二叉排序树可能是空树,或者是存在以下特征的二叉树: SearchBST(T, key),即二叉排序树的查找模块, InsertBST(T, key),即在二叉排序树中的插入模块 CreateBST(T),即创建二叉树,创建二叉树主要使用插入模块 DeleteBST(T, key),即删除关键字模块,需注意以下要点: 二叉排序树的实现(部分功能 标签:左右 oid let 根据 key值 arc arch 插入 不成功 原文地址:https://www.cnblogs.com/czrsdsb/p/12731863.html一、何为二叉排序树
二. 编写SearchBST(T, key)与InsertBST(T, key)的伪代码
1.SearchBST(T, key)伪代码
void SearchBST(BSTree t, int key)//确认树T与查找值KEY的存在
{
if(t==null || k==t->key)//先将key与根节点比较
return t;//若相同,则返回t
else if(key
2.InsertBST(T, key)伪代码
二叉排序树的插入操作,可以按照以下思路进行:
void InsertBST(T, key)//确认树T与查找值KEY的存在
{
if(T == null) {//先确定是不是空树
创建一个结点,结点值为key;
申明该树的左右子树都是空树;
return 1;
}
if(T>key){//若key比根结点小,从左子树找
InsertBST(T->lchild,key);
else//若key比根结点大,从右子树找
InsertBST(T->rchild,key);
}
三. 编写CreateBST(T)的伪代码实现从控制台输入创建BST树。最后使用代码实现。使用“50 30 80 20 40 90 10 25 35 85 23 88”创建BST,并中序输出该BST
1.CreateBST(T)伪代码
typedef struct BSTNode
{
TElemType data;
struct BSTNode *lchild, *rchild;//创建左右子树
}
void CreateBST(T){
先创建一个数组,录入一些结点数据。
if (T == NULL){//树为空
T=new Node;
T->lchild=NULL;
T->rchild=NULL;
return 1;
}
else if(T>data){//若插入的值小于根结点,则从左子树开始插入
return InsertBST(T->lchild,data);
}
else if(T《data){//若插入的值大于根结点,则从右子树开始插入
return InsertBST(T->rchild,data);
}
四. 编写DeleteBST(T, key)的伪代码实现从T中删除关键字key。如果无法编写出来,请写出在BST中删除关键字key所需注意的事项。
1.DeleteBST(T, key)关键要点
下面来逐个分析:a.关键字是叶子结点。
b.关键字只有左子树或只有右子树。
c.关键字既有左子树,也有右子树。