收藏 分销(赏)

二叉树的各种算法.doc

上传人:快乐****生活 文档编号:4384487 上传时间:2024-09-18 格式:DOC 页数:8 大小:28KB
下载 相关 举报
二叉树的各种算法.doc_第1页
第1页 / 共8页
二叉树的各种算法.doc_第2页
第2页 / 共8页
二叉树的各种算法.doc_第3页
第3页 / 共8页
二叉树的各种算法.doc_第4页
第4页 / 共8页
二叉树的各种算法.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、二叉树得各种算法、txt男人得承诺就像0岁老太太得牙齿,很少有真得。您嗜烟成性得时候,只有三种人会高兴,医生您得仇人与卖香烟得。/*用函数实现如下二叉排序树算法:(1) 插入新结点(2) 前序、中序、后序遍历二叉树 (3)中序遍历得非递归算法 (4) 层次遍历二叉树(5)在二叉树中查找给定关键字(函数返回值为成功1,失败) (6) 交换各结点得左右子树(7)求二叉树得深度 (8) 叶子结点数npt第一行:准备建树得结点个数n 第二行:输入n个整数,用空格分隔 第三行:输入待查找得关键字 第四行:输入待查找得关键字 第五行:输入待插入得关键字tpt第一行:二叉树得先序遍历序列 第二行:二叉树得中

2、序遍历序列第三行:二叉树得后序遍历序列 第四行:查找结果 第五行:查找结果 第六行第八行:插入新结点后得二叉树得先、中、序遍历序列 第九行:插入新结点后得二叉树得中序遍历序列(非递归算法)第十行:插入新结点后得二叉树得层次遍历序列第十一行第十三行:第一次交换各结点得左右子树后得先、中、后序遍历序列第十四行第十六行:第二次交换各结点得左右子树后得先、中、后序遍历序列 第十七行:二叉树得深度 第十八行:叶子结点数/nclude ”stdi、”inluemalc、#define TRUE1#defineFAE0#define OK 1fineERRR0efine INFEIBE -1deine OV

3、ERFLOW2typedf in Stats;typeef int yType;#deineSTCKIIT_SIZE 100 / 存储空间初始分配量#defneSTACKNREMEN10 /存储空间分配增量#dfne MAXQZE 100ypede int lemTe;tpedf structiTNe lemTpe data; rc BiTNod lcid,*cild;/左右孩子指针 BiTNode,*iTree;Satus SearchBST(BiTreeT,KyTyp e,Tree ,Biree&p)i(!T)p=f;turn SE;els if(ey=Tdta)p=T;retun T;e

4、lif(keyTta)retu echBS(Tlchl,ky,T,);els eturn(SeahBT(Trchild,ke,T,p));Status InertS(BiTreT,ElemType e)BiTree ,p; i(!SearchBT(,NULL,p)(Bree)maloc(siof(BiTod);daae;slchid=s-rcild=NLL;i(!p)T=s;el if(daa)plchilds;els rhil=s;rn TRUE; els retun FALSE;SatuPrintElment( mTy e ) / 输出元素e得值ritf(%d ”, e ); rtur ;

5、/ PrinElemeStausPreOrdeTravere( BiTree T, Status(Viit)(ElemType) ) / 前序遍历二叉树得递归算法,对每个数据元素调用函数Vsi。 /补全代码,可用多个语句 if()i(Vit(Tdta)f(Prdrrvee(Tlchld,Vsit))f(rOrderTraverse(Trchi,Vs)return OK;ern ERO;lse reurOK;/PeOerTravrsettus InrdeTraverse( BiTreT, Sa(*Visit)(ElemTye)) / 中序遍历二叉树T得递归算法,对每个数据元素调用函数isit.

6、/补全代码,可用多个语句if(T)if(InOrdeTravrse(T-lchil,isit))f(it(T-daa)if(nOrrravere(rchil,ist))rtun OK;reun OR; lse rturn OK; /IOeTraersettus PotOrdTaerse( Tree, Statu(*Vi)(emTy) / 后序遍历二叉树T得递归算法,对每个数据元素调用函数st。 /补全代码,可用多个语句i() if(ostOrdeTravere(T-lchid,Visit)(osOrrase(rhil,Visit)if(Vist(-daa))rur O;reurnEROR;el

7、se returO; / PostrdrTraersetausPuut(ire T) PreOrdTarse(,PrntElement);prin(n);nrTaerse(T, PrintElemen); rint(n);PotOderTravere(T,PrintElement); print(n”); reur OK;/非递归算法srut SqStc BiTreebase; / 在栈构造之前与销毁之后,ba得值为U BiTre*to; / 栈顶指针 int staksize; / 当前已分配得存储空间,以元素为单位; /顺序栈Status Iitack(SqStck &S) S、ba=(B

8、Tree )alloc(STACKINIT_SIZ*sieof(Bie)); if(!、se)retun EROR; S、top=S、base; 、sacksize=STACK_INITIZE; retrn K;Stau Puh(qSack ,BTree e) f((S、opS、bse)=S、ckize) S、ase(BTree)realc(S、base,(S、stacsie+STACKICREMET)sizeo(iree); (!、ase)returnERROR; S、tp=S、bas+、stackie; S、stacksize+=STACKINCREMEN; *S、tp+=e; retur

9、nOK;Stus Pop(SqSack ,BiTee e) if(、o=S、bae)retr ERR;e*-S、top;rturn K;StusSckEmpy(Sqtack S) / 若栈S为空栈,则返回TE,否则返回FAS i(、top-、base=0)r TRUE; ls retur FLSE;Stats nOrdeTrver1(iree T,Status(isit)(ElemTpe ),SqSkS)Bireep;InitStk(S);=T;hil(|!tckEmpty(S)if(p)Push(S,);p=lchl;else Po(S,p);if(!isi(pda))reurn ERO;=

10、p-child;return O;/层次遍历tpedef sruct Bire *be;/初始化得动态分配存储空间 int fn; /头指针,若队列不空,指向队列头元素 int rar; / 尾指针,若队列不空,指向队列尾元素得下一个位置 SqQuue;Status IntQuu(SqQue&Q) 、base=(BTe*)mloc(MAXQSI*sizeof(Bire); if(!Q、be)etrn EROR; Q、frot=Q、rear=0; rer OK;int QuueLeng(SqQuue Q) / 返回Q得元素个数/ 请补全代码rer(Q、rear-、rotMAXQSIZE)AXQS

11、IZ;Satus nueu(Sqeu &,BiTree e) / 插入元素e为Q得新得队尾元素/ 请补全代码 if(、ear+)%MXQIZE=Q、ront)retur ERROR; 、baseQ、reare; 、rr=(Q、rear+1)%MXQIZE; return O;Status DQuee(qQueu&Q,BTree&e) / 若队列不空,则删除得队头元素, 用返回其值, 并返回OK;否则返回ERROR/请补全代码 if(Q、t=Q、rear)rer ERROR; e=Q、aseQ、fon; 、fnt=(Q、ront+1)%MAXSZE; turn OK;Sts Levlravese

12、(BiTre T,SQuue Q)/层次遍历二叉树ItQuee(Q);BiTee p;p=;if(T)EnQueue(Q,T);/rint(%”,ueueLenh(Q));wl(uuegth(Q)!=0)DQueue(,); /根结点出队nt(d ,pdata); /输出数据f(lcild)EnQueue(Q,plchild); /左孩子进队i(prchild)Enuee(,p-chld); /右孩子进队reun K; vodhg(BiTree T)BTNode *p;i(T)p=T-lchild;Tlchlrcild;Tcd=p;Cng(Tlhld);Chane(Trhild); /retu

13、rn OK;nt BTreDep(BiTee ) /求由T指针指向得一棵二叉树得深度 /int p1,d2; if(!ULL) /计算左子树得深度 int p1=BTreepth(T-chil); /计算右子树得深度 in d2=BTeeDeph(T-rchild); /返回树得深度 f(dp1de) retrn dp1+; ese turndp2; ese retun ;/叶子结点数Saus yez(Biree T,SqQu Q)int i=0;IiQueue(Q);BTree;pT;i()EnQu(Q,T);/ritf(”%,QueeLenth();whil(QueueLeth(Q)!0)

14、DeQeu(Q,p);f(lchld)neue(,plhil);if(prchld)nQueue(Q,pci);f(!p-lchild&!prchild) i+; turi; ina() /主函数 SSaS;SqQueu Q,Q;iTree=ULL,f,p;int i,e,a,b,c;caf(d”,&n);for(=;in;i+)scanf(”%d,&e); IerBST(,e);sanf(d,&a);scanf(”d”,&b);scnf(d,&);Putut(T);print(n,achBST(T,,f,p));pintf(”dn,earcBST(,f,p);nrtBST(T,c);Puto();InOrderaese1(T, Pntment,S); prnt(n);evelTraerse(T,Q);rintf(”n”); Chae(T);Putout(T);Chge(T);Putout(T);prif(”,BTreDeph());printf();nf(”d,yezhi(T,Q);prinf(n”);rturn O;/mai

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服