设计并验证如下算法:而擦函数采用二叉链表结构表示,按输入的关键字序列建立一颗二叉排序树,并删除该二叉排序树上的某个节点。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef int TElemType;
int m,n;
typedef struct BiTNode {//树节点的建立
TElemType data ;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int SearchBST(BiTree T,int key,BiTree f,BiTree &p){
if(!T){
p=f;
return 0;
}else if(key==T->data){
p=T;
return 1;
}else if(key<T->data)
return SearchBST(T->lchild,key,T,p);
else return SearchBST(T->rchild,key,T,p);
}
int InsertBST(BiTree &T,TElemType e){
BiTree p,s;
if(!SearchBST(T,e,NULL,p)){
s=(BiTree)malloc(sizeof(BiTNode));
s->data=e;
s->lchild=s->rchild=NULL;
if(!p)
T=s;
else if(e<p->data)
p->lchild=s;
else
p->rchild=s;
return 1;
}else
return 0;
}
int CeateBiTree(BiTree &T)//创建树
{
TElemType ch;
T=N