二叉树的二叉链表类型定义如下typedefstructbtnodedatatypedatastructbtnodelchild,rchild

龙小琴 2019-12-21 18:28:00

推荐回答

递归:voidexchangeBTree*rt{BTree*temp=NULL;ifrt->lchild==NULL&&rt->rchild==NULLreturn;else{temp=rt->lchild;rt->lchild=rt->rchild;rt->rchild=temp;}ifrt->lchildexchangert->lchild;ifrt->rchildexchangert->rchild;}非递归:Stack是一个定义好的通用堆栈类型,支持初始化/进站/出战等操作intExchangeBiTree*T{Stacks;BiTree*p;InitStacks;p=T;whilep||!StackEmptys{ifp{pushs,p;p->Lchild;}else{pops,p;t=p->Rchild;p->Rchild=p->Lchild;p->Lchild=t;p-=->Lchild;}}return1;。
赵颖青2019-12-21 18:57:27

提示您:回答为网友贡献,仅供参考。

其他回答

  • 建立头指针h,和指向当前节点的指针p=h;按先序或中序遍历该2叉树.当碰到叶子节点c时:p->rchild=c;p=c;遍历结束,返回h*****************************structNode{DateTypedate;structNode*lchild,*rchild}*h,*p;main{*h=Node*mallocsizeofNode;*p=h;Node*tree;/*取得2叉树*/.../*遍历*/PreOderTraversetree;p=h->rchild;freeh;/*输出p*/...}PreOrderTraverseNodenode{ifnode==nullreturn;ifnode->lchild==null&&node->rchild==null{p->rchild=node;p=node;return;}PreOrderTraversenode->lchildPreOrderTraversenode->rchild。
    龚崇松2019-12-21 19:14:26
  • //我做了一个程序,可以实现二叉树的左右子树的交换功能,#include/*二叉树类型的定义二叉链表形式储存*/typedefchardatatype;//树的结点数据类型为字符型,可以根据需要修改typedefstructnode*pointer;//定义二叉树结点类型structnode{datatypedata;//结点数据pointerlchild,rchild;//左右孩子结点};typedefpointerbitree;//定义二叉树类型/*先根遍历交换左右子树*//*层次遍历序列生成*/constintmaxsize=100;pointerQ->rchild=s;//rear是奇数,新结点是右孩子front++;}}returnroot;}/*交换左右子数*/voidexchangebitreet{pointerp;ift==NULLreturn;//空树,直接返回p=t->lchild;t->lchild=t->rchild;t->rchild=p;//交换exchanget->rchild;//遍历原左子树exchanget->lchild;//遍历原右子树}/*二叉树的先根遍历*/voidpreorderbitreet//先根遍历{ift==NULLreturn;coutdatalchild;//先根遍历左子树preordert->rchild;//先根遍历右子树}voidmain{bitreeT=NULL;intch;cout>ch;switchch{case0:break;case1:T=level_creat;cout<<"二叉树生成成功!";break;case2:exchangeT;cout<<"交换成功!";break;case3:preorderT;cout<
    齐文艳2019-12-21 18:41:21

相关问答

是美国第三大城市芝加哥的学校。学校占地三百二十二英亩,拥有一百一十座教学办公楼、两个大型图书馆,除科研以外的财政预算超过十亿美元。伊利诺伊大学芝加哥分校的教学及科研实力为全国所公认,美国卡耐基高等教育基金会特别一类科研院校的称号,在全美三千两百所经承认的高等院校中,只有八十八所被授予此项荣誉称号。伊利诺伊大学芝加哥分校拥有良好的完善的学生服务设施和网络,东西两校园都有条件很好的学生宿舍和学生活动中心学校的十余个现代化电脑中心分布在两个校园的各处教学楼中,免费提供给学生使用,其中部分电脑中心为昼夜开放。其他学生活动设施还包括:两个标准室内游泳池,一个短池室内游泳池,多个网球场,多个室内篮球场,健身房,保龄球馆和桌球等。为方便学生和教职员工,学校有免费的空调车定时往来于校园各主要教学楼之间。另外,校园内还设有餐饮店、银行、书店、发廊、课间休息室、聚会厅等多项服务设施。伊利诺伊大学芝加哥分校是芝加哥市中心主要的研究型大学,共有学生27,000余名,教育质量堪称世界一流。伊利诺伊大学芝加哥分校共有15个学院,其中包括全国最大的医学院,每年研究花费超过三亿三千二百万美元。学生总人数中本科生约占65%,研究生和专业学院学生占35%,被认为是美国多样化程度最高的大学之一。学校特色伊利诺大学芝加哥分校创立于1982年,当时是由伊利诺大学医学中心与位于芝加哥的校区合并而成,因此伊利诺大学芝加哥分校医学专业享负盛名,其中犯罪研究专业研究生排名全美第19名。伊利诺大学芝加哥分校位于国际大都会芝加哥的心脏地带,为芝加哥最大型的高等教育机构,在学术教学质量上及实际研究成果上,都相当著名,为全美排名前百名的研究型大学之一,曾被USNewsandWorldReport评为三级国家级大学,学术声誉全美排名98。伊利诺大学芝加哥分校的商业管理、工程、社会科学、健康科学、心理学、建筑学颇负盛名,深受学生们喜爱。伊利诺大学芝加哥分校在专业领域上也独树一帜,拥有多种专业的研究中心及机构,并多有杰出表现及获得多种国家级评鉴优良声誉或奖项,如:美国科学发展协会AmericanAssociationfortheAdvancementofScience、美国人文基金会NationalEndowmentfortheHumanities等。
文件main.cpp代码如下:#include//malloc等#include//标准输入输出头文件,包括EOF=^Z或F6,NULL等#include//atoi,exit#include//数学函数头文件,包括floor,ceil,abs等#defineClearBiTreeDestroyBiTree//清空二叉树和销毁二叉树的操作一样typedefstructBiTNode{intdata;//结点的值BiTNode*lchild,*rchild;//左右孩子指针}BiTNode,*BiTree;intNil=0;//设整型以0为空voidvisitinte{printf"%d",e;//以整型格式输出}voidInitBiTreeBiTree&T{//操作结果:构造空二叉树TT=NULL;}voidCreateBiTreeBiTree&T{//算法6.4:按先序次序输入二叉树中结点的值可为字符型或整型,在主程中定义,//构造二叉链表表示的二叉树T。变量Nil表示空子树。修改intnumber;scanf"%d",&number;//输入结点的值ifnumber==Nil//结点的值为空T=NULL;else//结点的值不为空{T=BiTreemallocsizeofBiTNode;//生成根结点if!TexitOVERFLOW;T->data=number;//将值赋给T所指结点CreateBiTreeT->lchild;//递归构造左子树CreateBiTreeT->rchild;//递归构造右子树}}voidDestroyBiTreeBiTree&T{//初始条件:二叉树T存在。操作结果:销毁二叉树TifT//非空树{DestroyBiTreeT->lchild;//递归销毁左子树,如无左子树,则不执行任何操作DestroyBiTreeT->rchild;//递归销毁右子树,如无右子树,则不执行任何操作freeT;//释放根结点T=NULL;//空指针赋0}}voidPreOrderTraverseBiTreeT,void*Visitint{//初始条件:二叉树T存在,Visit是对结点操作的应用函数。修改算法6.1//操作结果:先序递归遍历T,对每个结点调用函数Visit一次且仅一次ifT//T不空{VisitT->data;//先访问根结点PreOrderTraverseT->lchild,Visit;//再先序遍历左子树PreOrderTraverseT->rchild,Visit;//最后先序遍历右子树}}voidInOrderTraverseBiTreeT,void*Visitint{//初始条件:二叉树T存在,Visit是对结点操作的应用函数//操作结果:中序递归遍历T,对每个结点调用函数Visit一次且仅一次ifT{InOrderTraverseT->lchild,Visit;//先中序遍历左子树VisitT->data;//再访问根结点InOrderTraverseT->rchild,Visit;//最后中序遍历右子树}}voidPostOrderTraverseBiTreeT,void*Visitint{//初始条件:二叉树T存在,Visit是对结点操作的应用函数//操作结果:后序递归遍历T,对每个结点调用函数Visit一次且仅一次ifT//T不空{PostOrderTraverseT->lchild,Visit;//先后序遍历左子树PostOrderTraverseT->rchild,Visit;//再后序遍历右子树VisitT->data;//最后访问根结点}}voidmain{BiTreeT;InitBiTreeT;//初始化二叉树Tprintf"按先序次序输入二叉树中结点的值,输入0表示节点为空,输入范例:1200300\n";CreateBiTreeT;//建立二叉树Tprintf"先序递归遍历二叉树:\n";PreOrderTraverseT,visit;//先序递归遍历二叉树Tprintf"\n中序递归遍历二叉树:\n";InOrderTraverseT,visit;//中序递归遍历二叉树Tprintf"\n后序递归遍历二叉树:\n";PostOrderTraverseT,visit;//后序递归遍历二叉树T。