实现二叉排序树的各种算法.doc

实现二叉排序树的各种算法.doc

ID:57643547

大小:53.50 KB

页数:14页

时间:2020-08-29

实现二叉排序树的各种算法.doc_第1页
实现二叉排序树的各种算法.doc_第2页
实现二叉排序树的各种算法.doc_第3页
实现二叉排序树的各种算法.doc_第4页
实现二叉排序树的各种算法.doc_第5页
资源描述:

《实现二叉排序树的各种算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、wyf实现二叉排序树的各种算法一.需求分析(1)系统概述:本系统是针对排序二叉树设计的各种算法,提供的功能包括有:(1)插入新结点(2)前序、中序、后序遍历二叉树(3)中序遍历的非递归算法(4)层次遍历二叉树(5)在二叉树中查找给定关键字(函数返回值为成功1,失败0)二.总体设计(1)系统模块结构图(2)数据结构设计typedefstructBiTNode{ElemTypedata;structBiTNode*lchild,*rchild;//左右孩子指针}BiTNode,*BiTree;typedefBiTreeSElemType;typedefBiT

2、reeQElemType;typedefstruct{QElemType*base;//初始化的动态分配存储空间intfront;//头指针,若队列不空,指向队列头元素intrear;//尾指针,若队列不空,指向队列尾元素的下一个位置}SqQueue;typedefstruct{SElemType*base;//在栈构造之前和销毁之后,base的值为NULLSElemType*top;//栈顶指针intstacksize;//当前已分配的存储空间,以元素为单位}SqStack;//顺序栈StatusInitStack(SqStack&S){//构造一个空

3、栈S,该栈预定义大小为STACK_INIT_SIZE//请补全代码S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S.base)return(ERROR);S.top=S.base;S.stacksize=STACK_INIT_SIZE;returnOK;}StatusPush(SqStack&S,BiTreee){//在栈S中插入元素e为新的栈顶元素//请补全代码if(S.top-S.base>=S.stacksize){S.base=(SElemType*)reallo

4、c(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));if(!S.base)returnERROR;S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;returnOK;}StatusPop(SqStack&S,SElemType&e){//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR//请补全代码if(S.top==S.base)returnERROR;e=*--S.top;return

5、OK;}StatusInitQueue(SqQueue&Q){//构造一个空队列Q,该队列预定义大小为MAXQSIZE//请补全代码Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType));if(!Q.base)returnERROR;Q.front=Q.rear=0;returnOK;}StatusEnQueue(SqQueue&Q,QElemTypee){//插入元素e为Q的新的队尾元素//请补全代码if((Q.rear+1)%MAXQSIZE==Q.front)returnERROR;Q.base[

6、Q.rear]=e;Q.rear=(Q.rear+1)%MAXQSIZE;returnOK;}StatusDeQueue(SqQueue&Q,QElemType&e){//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR//请补全代码if(Q.front==Q.rear)returnERROR;e=Q.base[Q.front];Q.front=(Q.front+1)%MAXQSIZE;returnOK;}StatusCreateBiTree(BiTree&T,intn){//算法6.4//按先序次序输入二叉树中结点的值(一个

7、字符)//构造二叉链表表示的二叉树T。inti,e,loop=1;BiTreeS1,S2;for(i=1;i<=n;i++){loop=1;scanf("%d",&e);if(!(S1=(BiTNode*)malloc(sizeof(BiTNode))))returnERROR;S1->data=e;S1->lchild=NULL;S1->rchild=NULL;S2=T;if(S2==NULL)T=S1;elsewhile(loop){if(S1->datadata)if(S2->lchild==NULL){S2->lchild=S1;loo

8、p=0;}elseS2=S2->lchild;elseif(S2->rchild

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。