树与二叉树转换实现8.docx
《树与二叉树转换实现8.docx》由会员分享,可在线阅读,更多相关《树与二叉树转换实现8.docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河南工程学院数据结构与算法课程设计成果报告树与二叉树转换实现2014年12月29日3程序清单#include #include #include #define MAX_TREE_SIZE 100typedef struct int data;int parent;双亲位置域PTNode;/*双亲表示法树结构*/typedef struct PTNode nodeMAX_TREE_SIZE;int count;根的位置和节点个数PTree;/*树的孩子兄弟表示结点结构定义*/ typedef struct nodeint data;struct node *firstchild; struct
2、 node *rightsib;BTNode,*BTree;初始化树(双亲表示法)void init_ptree(PTree *tree)(tree-count=-1;)/初始化树结点(孩子兄弟表示法)BTNode GetTreeNode(int x)BTNode t;t.data=x;t.firstchild=t.rightsib=NULL; return t;)/树的前序遍历(递归)void preorder (B TN ode *T)(if(T!=NULL)(printf(n%d H,T-data);prcordcr(T-firstchild);preorder(T-rightsib);
3、)/树的前序遍历(非递归)void preorder2(PTree T)7 int ij=O;BTNode 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 ;idat
4、a)(j+;is=&pj;)if(!(is-firstchiid)is-firstchild=ip;ir=ip;else(ir-rightsib=ip; ir=ip;)Tree=&p0;return Tree;)/*主菜单*/void Menu()(printfC*-=M=nn);printf(*输入1以双亲法创立一棵一般树*n);printf(”*输入2树的前序遍历(递归)*n)printf,*输入3树的后序遍历(递归)*n”);输入4树的前序遍历(非递归)*n);printf(*输入5树的后序遍历(非递归)*rT);printf(*输入6层次序的非递归遍历*n”);printf(*输入 0
5、退出程序*n)printf(=n); printf。请输入执行的指令/*副菜单*/void Menu2()pnntf( * pjij. * *n) printf(*9 printf(*O /*主函数*/返回主菜单继续操作*n);退出程序*n)void main() int i=0,cl,c2;PTree T;BTNode *Tree;init_ptree(&T);loop: Menu();scanf(H%dH,&cl);switch(cl)(case 1:printf(建立一般树,依次输入各个结点情况:n)prints输入结点方式:双亲数据,整型数据(第一个结点双亲数据为-1,最后以-1,-1
6、 结束)n 例子:-1/l,3n)T=CreatTree(T);Tree=change(T);printf(一般树转换成二叉树后的情况:n)PrintBTree(Tree,i); getchar();break;case 2:printf(树的前序遍历(递归):n)preorder (Tree);printf(HnH);break;case 3:printf(树的后序遍历(递归):n)inoeder(Tree);printf(HnH);break;case 4:printf(树的前序遍历俳递归):n”);preorder2(T);printf(HnH);break;case 5:printf(
7、树的后序遍历俳递归):n”);inoeder2(T);printf(nnn);break;case 6:printf(树的层次遍历:n”);level(T);printf(nnn);break;case 0:exit(l);break;)Menu2();scanf(d&c2);if(c2=9)goto loop;else if(c2=0)exit(l);)104测试4.1测试数据根据选项输入一个数a C: JlSOFTCYuYanbinwteBp. exe*输入1*输入2*输入3*输入4主菜单= 以双亲法创立一棵一般树树的前序遍历(非递归)*输入5树的后序遍历(非递归)* 输入6层次序的非递归
8、遍历* 树的前序遍历(递归)* 树的后序遍历(递归)*输入o退 * 程序 *请输入执行的指令:.图 4. 1-1补 C:JISOFTCYuYanbinwvteBp.ezek*输入1k*输入2k*输入3畤*输入4k*输入5 k*输入6k*输入0主菜单二二二二二二二二二二二二二二-二二二二二 以双菱法创立一棵一般树林* 树的前序遍历(递归)* 树的后序遍历(递归)* 树的前序遍面(非递归)* 树的后序遍历(非递归)* 层次序的非递归遍历* 退出程序 *清输入执行的指令:1建立一般树,依次输入各个结点情况:前入结点方式:双亲数据,整型数据(第一个结点双亲数据为最后以T结束)列子:T,1 1,3俞入第
9、1结点:图指令输入图表11通过输入数据来访问*轴入2树的刖序遍历(递归)* *输入3树的后序遍历(递归)*输入4树的前序遍历(非递归)* *输入5树的后序遍历(非递归)*输入6层次序的非递归遍历* * 输入 0退出程序* 清谕入执行的指令:1建立一般树,依次输入各个结点情况:输入结点方式:双亲数据,整型数据(第一个结点双亲数据为-1,最后以T, T结束)例子:-1,1 1,3输入第1结点:-1,1输入第2结点: 1,2输入第3结点:1,3输入第4结点:2,4图4. 1-3遍历方法输入结点方式:双亲数据,整型数据(第一个结点双亲数据为-1,最后以T, -1结束)例子:-1,1 1,3输入第1结点
10、:-1U输入第2结点:1,2输入第3结点:1,3输入第4结点:2,4输入第5结点: 一T创立的树具体情况如下:序号结点双亲01-11212313424-1-14. 1-4各节点属性12完成树的创立c C:JlSOFTCTuTanbinwteBp. exe创立的树具体情况如下: 序号结点双亲01-1211 31422 -1T一般树转换成二叉树后的情况:13W* 割单*9返回主菜单继续操作*0退出程序*D :CYuYanbin wwtemp .exe般树转换成二叉树后的情况:i副是 s. * 返回至塞单继续操作* 退出程方*二 二 二 二 二 二 二二 二 二 二 二二 二 二 二 二 33二 二
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 转换 实现
限制150内