树与二叉树转换实现3.docx
《树与二叉树转换实现3.docx》由会员分享,可在线阅读,更多相关《树与二叉树转换实现3.docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河南工程学院数据结构与算法课程设计成果报告树与二叉树转换实现2014年12月29日void preorder2(PTree T)int i;for(i=0;ifirstchild);printf(%d ,T-data);inoeder(T-rightsib);)树后序遍历(非递归)void inoeder2(PTree T)(int i;for(i=T.count-l;i=0;i-)(printf(%d ,T.nodei);层次遍历void level(PTree T)(int i;for(i=0;irightsib,level+l);for(i=l;idata);RrintBTree(roo
2、t-firstchild,level+l);)输出树void print_ptree(PTree tree) int i;printf( 序号 结点双亲n);for(i=0;i=tree.count;i+)(printf(%8d%8d%8d,i,tree.nodei.data,tree.nodei.parent); printf(n);)/*用双亲表示法创立树*/PTree CreatTree(PTree T)(int i=l;int fa,ch;PTNode p;for(i=l;ch!=-l;i+)(printf(输入第d 结点:n,i);scanf(%d/%d)&fa,&ch);print
3、f(n);p.data=ch;p.parent=fa;T.count+;T.nodeT.count.data = p.data;T.nodeT.count.parent = p.parent;)printfCXn);printf(“创立的树具体情况如下:rT);print_ptree(T);return T;/* 一般树转换成二叉树*/BTNode *change(PTree T)(int i,j=0;BTNode pMAX_TREE_SIZE;BTNode *ip,*is,*ir,*Tree;ip=(BTNode *)malloc(sizeof(BTNode);is=(BTNode *)ma
4、lloc(sizeof(BTNode);ir=(BTNode *)malloc(sizeof(BTNode);Tree=(BTNode *)malloc(sizeof(BTNode);for(i=0;iT.count;i+)(pi=GetTreeNode(T.nodei.data);)for(i=l;idata)(j+;is=&pj;10is-firstchild=ip;ir = ip;)else(ir-rightsib=ip;ir = ip;)Tree=&pO;return Tree;/*主菜单*/void Menu()printf(=主菜单=二=二二二=二=二=二二=仁);printf(*
5、输入1以双亲法创立一棵一般树*树的前序遍历(递归)*n);树的后序遍历(递归)*n“);printf(*输入4树的前序遍历(非递归)*n);printf(*输入5树的后序遍历(非递归)*rT);printf(*输入6层次序的非递归遍历*n);退 I 不呈j*n”)printf(printf(=n,);printf(“请输入执行的指令11/*副菜单*/void Menu2()printf(SC 33 3C 口3|5j 5j 3|3 SC 5|3jprintf(*9返回主菜单继续操作* *n“);printf(*O退出程序n);/*主函数*/void main()(int i=0,cl,c2;PT
6、ree T;BTNode *Tree;init_ptree(&T);loop:Menu();scanf(%d,&cl);switch(cl)(case 1: printf(建立一般树,依次输入各个结点情况:n);printf(输入结点方式:双亲数据,整型数据(第一个结点双亲数据 为-1,最后以-1,-1结束)n例子:-1,1 13n);T=CreatTree(T);Tree=change(T);printf(一般树转换成二叉树后的情况:n);PrintBTree(TreeJ);getchar();break;12case 2: printf(树的前序遍历(递归):n);preorder(Tre
7、e);printfCXn);break;printf(树的后序遍历(递归):n);inoeder(Tree);printf(n);break;case 3: printf(树的前序遍历俳递归):n);preorder2(T);printfCXn);break;printf(树的后序遍历(非递归):rT);inoeder2(T);printf(n);break;case 4: printf(“树的层次遍历:n);level(T);printfCXn);break;13case 0:exit ;break;)Menu2();scanf(%d,&c2);if(c2=9)goto loop;else
8、if(c2=0) exit ;)144测试测试数据程序开始:cT C:JlSOFTCYuYanbinwp. exe=主菜单* *输入1以双亲法创立一棵一般树* *输入2树的前序遍历(递归)* *输入3树的后序遍历(递归)* *输入4树的前序遍历(非递归)* *输入5树的后序遍历(非递归)* *输入6层次序的非递归遍历*输入0*输入0退出程序 *请输入执行的指令:建立一棵一般树:输入指令1c、 C:J.SOFICYuYanbinxte-p. exe=主菜单=Ak*输入1以双亲法创立一棵一般树*输入2树的前序遍历(递归)*k*输入3树的后序遍历(递归)*咻*输入4树的前序遍历(非递归)*k*输入5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 转换 实现
限制150内