- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)