树与二叉树的转换.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《树与二叉树的转换.docx》由会员分享,可在线阅读,更多相关《树与二叉树的转换.docx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河南工程学院数据结构与算法课程设计成果报告树与二叉树的转换2. 5测试程序说明程序开始:建立一棵一般树:输入指令1输入结点方式:双亲数据(整型),结点数据(整型)以-1结束 如:-1,1 1,2 -1,-1一般树创立完的具体情况:把一般树转换为二叉树后:11副菜单项选择择:选择9继续操作 运用各种遍历形式遍历树:12副菜单项选择择:选择0结束程序3程序清单#include#include#include#define MAX_TREE_SIZE 100/-树的双亲表君储结构typedef struct PTNode结点结构int data;int parent;双亲位置域PTNode; 树的双
2、亲表示结点的结构定义typedef struct PTree树结构PTNode node MAX_TREE_SIZE;int count;根的位置和结点数PTree; 双亲表示树的结构typedef struct nodeint data;struct node * firstchild;struct node * rightsib;BTNode,* BTree;树的孩子兄弟表示结构结点的定义void init_ptree(PTree * tree)tree-count=-l;树的初始化(双亲)BTNode GetTreeNode(int x)BTNode t;t.data=x;t.first
3、child=t.rightsib=NULL;return t;树结点的初始化(孩子兄弟)void preorder(BTNode * T)if(T!=NULL)printf(%dJ-data);preorder(T-firstchild);preorder(T-rightsib);)树的前序遍历(递归)void preorder2(PTree T)int i;for(i=0;ifirstchild);printf(%d,T-data);inorder(T-rightsib);)树后续的遍历(递归)void inorder2(PTree T)int i;for(i=T.count-l;i=0;i
4、-)printf(%d/T.nodei);)树的后序遍历(非递归)void level(PTree T)int i;for(i=0;irightsib,level+l);for(i=l;idata);PrintBTree(root-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.dataztree.nodei.parent); printf(n);) 输出树PTree C
5、reatTree(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);printf(n);p.data=ch;p.parent=fa;T.count+;T.nodeT.count.data=p.data;T.nodeT.count.parent=p.parent;)printf(n);printf。,创立的树具体如下:n);print_ptree(T);return T; 用双亲法表示树BTNode * change(PTree T)int i,j=0;BT
6、Node pMAX_TREE_SIZE;BTNode *ip,*is,*ir,*Tree;ip=(BTNode *)malloc(sizeof(BTNode);is=(BTNode *)malloc(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;)if(!(is-firstchild) is-firstchild=ip;ir
7、=ip;)Tree=&p0;return Tree; 一般树转换成二叉树void Menu()printf(主菜单nH);printf(“输入 1以双亲法创立一棵一般树n);printf(“输入 2树的前序遍历(递归)n);printf(输入 3树的后序遍历(递归)n);printf(输入 4树的前序遍历(非递归)n);printf(输入 5树的后序遍历(非递归)n);printf(“输入 6层次序的非递归遍历n);printf(输入 0退出程序n);printf(n);)void Menu2() printf( printf(n);printf(“输入 9 printf(“输入 0print
8、f(“请输入要执行的指令n“);副菜单n);返回主菜单操作n);退出程序n);)void main()int i=0,cl,c2;PTree T;BTNode * Tree;init_ptree(&T);loop:Menu();scanf(%d,&cl);switch(cl)case 1: printf(建立一般树,依次输入各个结点情况)printf(输入结点的方式:双亲数据,整型数据(第一个结点双亲数据为-1, 最后以-1, -1结束n例如:-1, 11, 3);T=CreatTree(T);Tree=change(T);printf(一般树转换成二叉树的情况:n);PrintBTree(T
9、reeJ);getchar();break;case 2: printf(树的前序遍历(递归):nH);preorder(Tree);printf(n);break;case 3: printf。,树的后序遍历(递归):n);inorder(Tree);printf(n);break;case 4: printfC,树的前序遍历(非递归):n);preorder2(T);printf(n);break;case 5: printf(“树的后序遍历(非递归):n);inorder2(T);printf(n);break;case 6: printf(“树的层次遍历:n);level(T);pri
10、ntf(n);break;case 0:exit ; break;Menu2();scanf(%d,&c2);if(c2=9)goto loop;else if(c2=0) exit ;)4测试4.1测试数据(1)编写和执行程序,输出主菜单,如图4-1T所示。12 3 4 5 6 0入入入入人人入EM号瞿序程 三双的的的的次出单(菜建历历历典 序普递#dj 秋 般dn/归归 递递历请输入要执行的指令建立一亲数据次输入各个结点情况输入结点的方式:双亲数据,整型数据(第一个结点双结束例如:-1, 1 1, 3)请输入第1结点:-1.1图4-1-1程序运行结果(2)程序运行后输入指令1如图4-1-1
11、所示,然后根据提示依次输入各个结点-1, 11,2 2, 3 3,4 3, 5 4,6 -1,-1 如图 4-1-2 所示。Im E:vc -h 4-3erDebu qe r.exew.亲数据为T,最后以T,T结束 例如:-1, 11, 3)请输入第1结点:-1.1请输入第2结点:1,2请输入第3结点:2,3请输入第4结点:3,4请输入第5结点:3,5请输入第6结点:4,6请输入第7结点:-1,一1创立曾亶具罐里下q主图4-1 -2输入各个结点(3)车刖入名口点以-1,1开始,以-1, -1 2口束,输出树的2口点和双亲如图4-1-3所不。创立世树具他地下: 序号结点双杀01-11212323
12、434535646-1-1般树转换成二叉树的情况:1 2副菜单9 0人入返退回出.a- tnp s 主程4-1 -3创立树(4)选择功能9返回主菜单,继续选择功能键执行命令, 前序遍历(递归)如图4-1-4所示。4-1 -3创立树(4)选择功能9返回主菜单,继续选择功能键执行命令, 前序遍历(递归)如图4-1-4所示。选择功能键2,输出树的, E:贺据报告 Debugfdd.exe,9 0 入入 公那么刖99 0 入入 公那么刖9返退主程回出12 3 4 5 6 0入入人入人人入笔创院亲一号瞿序程 三嗡的的的次出- I, 建历历历皆普递归归遮遍历4MJ 秋 般33请输入要执行的指令2树的前序遍
13、历(递归):12346副菜单顿人9返回主菜单操作输入0退出程后图4-1-4输出树的遍历(5)选择功能9返回主菜单,继续选择功能键执行命令,选择功能键5,输出树的 后序遍历如图4-1-5所示。供盘报告Debugfdd.exe/对的层次遍历:123456副菜单4MJ 秋 般33归归递递历膏递- 1 建历历历典主程回出返退9 0人入PMZ-OH bl-k-rr-Tr 9更创髀法序 以亲口卷疆序程 3双的的的的次出量 青输入要执行的指令胸的后序遍历(非递归):U654321I副菜单P输入9返回主是单操作输入。追出程序图4-1-5树的后序遍历(6)选择功能9返回主菜单,继续选择功能键执行命令,选择功能,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 转换
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内