作业展示
1.伪代码部分
(第一问)SearchBST(T, key)
{
if ((T不为空)或者key == T根结点值)return T;
else if(key小于T结节点的值);
返回 SerachBST(T结点左孩子,key);
else 返回 SerachBST(T结点右孩子,key);
}
(第一问)InsertrBST(T,key)
{
if(T为空) key作为根结点插入;
else {
if(key<T值)T左孩子=Insert(T左孩子,key);
else(key>T值) T右孩子=Insert(T右孩子,key);
}
return T;
}
(第二问)CreateBST(T,int a[],int n)
{
T为空树;
for(int i=0;i<n;i++)按照数组元素个数进行循环插入
InsertrBST(T,a[i])插入二叉排序树中
}
(第三问)DeleteBST(T,key)
{
if(T为空)返回;
else{
if(T->data==key){
返回DeletenodeBST(T);
}
else if(T->data大于key)
返回DeletenodeBST(T->lchild,key);
else 返回DeletenodeBST(T->rchild,key);
}
}
DeletenodeBST(T)
{
定义排序树p,s;
if(T左孩子为空){
p等于T;
T等于T左孩子;
}
else if(T右孩子为空){
s等于T;
T等于T右孩子;
}
else {
p等于T;
P等于T左孩子;
while(s右孩子不为空){
p=s;
s等于s右孩子;
}
}
}
2.代码及结果展示(第一问,第二问)
结果