树与二叉树的转换1.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
河南工程学院《数据结构与算法》课程设计 成果报告 树与二叉树的转换2014年12月29日 2.4程序流程图 设计程序的第一步是创立树,即数的结构体的建立,然后采用递归法法 进行树的先序遍历,先遍历根结点,输入树的结点数量,孩子结点及其父亲结点 的数据,建立数队列、二叉树队列。采用结构体指针数组,存放结点的地址,完 成树与二叉树队列的初始化、入队、判空、出队等操作。具体流程如下列图2. 4.1 所示: 树的遍历 树的遍历 树的遍历建立数队列、二叉树队 石||渝入树结点数据 树的遍历 建立数队列、二叉树队 石|| 渝入树结点数据 渝入树结点数据*始数列叉队II 初俗队二树相对、叉队入— 数列二树列队 渝入树结点数据 *始数列叉队II 初俗队二树相 对、叉队入— 数列二树列队 」、叉队是为— 一树二树列否空 I 一 树、 二叉 树队 列出 队 图2.4. 1程序流程图 3程序清单#includeiostream using namespace std; #includemalloc. h Sdefine DEGREE 5 //树的高度 #define NULL 0ttdefine QUEUESIZE 10 ttdefine MAX_N0DE_NUM 100typedef struct stl〃树结点的类型 ( char data;〃数据域,采用char星 struct stl children [DEGREE]; 〃指向孩子结点的指针域 }CTreeNode;typedef struct st2 ( char data;〃数据域 struct st2 *lchild, *rchild;〃左右孩子结点的指针 }BTreeNode;CTreeNode *SearchCTree(CTreeNode *root ,char data) ( int i; CTreeNode *returnNode; if (root-data==data) return root; else [ for(i=0;iDEGREE;i++) {if(root-chiIdren[i]==NULL) return NULL; else ( returnNode=SearchCTree (root-chiIdren[i], data);〃递归查找 if (returnNode!=NULL)return returnNode; CTreeNode *CreateSTree() int i, j, k; char data, parent; CTreeNode *root,*parentNode, *node; cout* 〃请输入树的结点的数量:〃; cin?j; if (j==0)return NULL;〃空树,结束函数 cout* 〃请输入根结点的数据:〃;cin?data; fflush(stdin);root=(CTreeNode *)malloc(sizeof(CTreeNode)); root-〉data=data;for(i=0;iDEGREE;i++) root-chi1dren[i]=NULL; for(i=2; i=j; i++)〃依次输入每个结点的信息 (cout。〃请输入〃〃个孩子结点的数据及其父亲结点的数据:〃; cin?data〉parent;〃切记当以%c号格式输入数据时候,不要输入空格 fflush (stdin);node=(CTreeNode *)malloc(sizeof(CTreeNode)); node-〉data=data;for (k=0;—DEGREE ;k++) node-children[k]=NULL;〃printf (“验证parent二%c\n〃,parent); parentNode=SearchCTree (root, parent);〃查找指定数据的结点 for(k=0;kDEGREE;k++) (if (parentNode-children[k]==NULL) (parentNode-chiIdren[k]=node; break;) )) return root;} void preorderTree(CTreeNode *ctroot)〃遍历每个节点的操作就是输出该结点的data域 (CTreeNode *ctchild; int i;9 cout?ctroot-data?/z 〃; 〃先遍历根结点 for(i=0; iVDEGREE; i++) 〃依次先序遍历孩子结点 {ctchild=ctroot-children[i]; if(ctchild=NULL)break;〃孩子结点遍历结束,退出 elsepreorderTree(ctchild) /递归先序遍历 )) 〃树队列结构体类型typede

文档评论(0)

136****3519 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档