资源描述:
《最新二叉排序树(C语言).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、__________________________________________________#include#includetypedefintKeyType;typedefstructBinSearchNode{KeyTypekey;/*结点的关键码字段*/structBinSearchNode*llink,*rlink;/*二叉树的左、右指针*/}DicElement;typedefstruct{intMAXNUM;/*字典中元素的个数上界*/intn;/*为字典中实际
2、元素的个数*/int*element;/*存放字典中的元素*/}SeqDictionary;structBinSearchNode;typedefstructBinSearchNode*PBinSearchNode;typedefstructBinSearchNode*BinSearchTree;/*二叉排序树*/typedefBinSearchTree*PBinSearchTree;intsearch(PBinSearchTreeptree,KeyTypekey,PBinSearchNode*position){PB
3、inSearchNodep,q;p=*ptree;q=p;while(p!=NULL){q=p;/*用q记录父结点的位置*/if(p->key==key){*position=p;return1;}/*检索成功*/elseif(p->key>key)p=p->llink;/*进入左子树继续检索*/elsep=p->rlink;/*进入右子树继续检索*/}*position=q;return0;/*检索失败,position指向失败时的父结点*/}voidinOrder(BinSearchNode*p){if(p){if
4、(p->llink)inOrder(p->llink);收集于网络,如有侵权请联系管理员删除__________________________________________________printf("%d",p->key);if(p->rlink)inOrder(p->rlink);}}intinsert(PBinSearchTreeptree,KeyTypekey){PBinSearchNodep,position;if(search(ptree,key,&position)==1)return1;/*已存在
5、关键码为key的结点*/p=(PBinSearchNode)malloc(sizeof(structBinSearchNode));/*申请新结点*/if(p==NULL){printf("Error");return0;}/*申请空间出错*/p->key=key;p->llink=p->rlink=NULL;/*对新结点的赋值*/if(position==NULL)*ptree=p;/*原树为空树*/elseif(keykey)position->llink=p;/*插入position的左
6、子树*/elseposition->rlink=p;/*插入position的右子树*/return1;}intcreatSearchTree(PBinSearchTreeptree,SeqDictionary*dic)//新建二叉排序树{inti;*ptree=NULL;/*将二叉排序树置空*/printf("请输入字典中允许的最大元素个数");scanf("%d",&dic->MAXNUM);dic->element=(int*)malloc(sizeof(int));printf("请输入当前要插入的元素的个
7、数");scanf("%d",&dic->n);printf("请输入%d个大小不一样的整数",dic->n);for(i=0;in;i++){scanf("%d",&dic->element[i]);if(!insert(ptree,dic->element[i]))return0;/*将新结点插入树中*/}return1;}收集于网络,如有侵权请联系管理员删除__________________________________________________intdeleteNode_a(PBi
8、nSearchTreeptree,KeyTypekey){PBinSearchNodeparentp,p,r;p=*ptree;parentp=NULL;while(p!=NULL){if(p->key==key)break;/*找到了关键码为key的结点*/parentp=p;/*没有找到选子树*/if(p->key>key)p