数据结构课程设计参考答案a组课案.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文档。上传文档
查看更多
/* 二叉树的层次遍历 */ #includestdio.h #includestdlib.h #includeconio.h #includestring.h #define TREEMAX 50 typedef struct node { char data; struct node *lchild; struct node *rchild; } Node; 递归创建二叉树 Node *CreateBT() { Node *t; char x; scanf(%c, x); fflush(stdin); if(x==#) t=NULL; else { t=new Node; t-data=x; printf(\t\t 请输入 %c结点的左子结点 : ,t-data); t-lchild=CreateBT(); printf(\t\t 请输入 %c结点的右子结点 : ,t-data); t-rchild=CreateBT(); } return t; } 递归先序遍历二叉树 void Preorder(Node *T) { if(T) { printf(%3c,T-data); Preorder(T-lchild); Preorder(T-rchild); } } 递归中序遍历二叉树 void Inorder(Node *T) { if(T) { Inorder(T-lchild); printf(%3c,T-data); Inorder(T-rchild); } } 递归后序遍历二叉树 void Postorder(Node *T) { if(T) { Postorder(T-lchild); Postorder(T-rchild); printf(%3c,T-data); } } 非递归先序遍历二叉树 void noRecursivePreorder(Node *T) { Node *St[TREEMAX],*p; int top=-1; if(T!=NULL) { top++; St[top]=T; while(top-1) { p=St[top]; top--; printf(%c,p-data); if(p-rchild!=NULL) { top++; St[top]=p-rchild; } if(p-lchild!=NULL) { top++; St[top]=p-lchild; } } printf(\n); } } 非递归中序遍历二叉树 void noRecursiveInorder(Node *T) { Node *St[TREEMAX],*p; int top=-1; if(T!=NULL) { p=T; while(top-1||p!=NULL) { while(p!=NULL) { top++; St[top]=p; p=p-lchild; } if(top-1) { p=St[top]; top--; printf(%c,p-data); p=p-rchild; } } printf(\n); } } 非递归后序遍历二叉树 void noRecursivePostorder(Node *T) { Node *St[TREEMAX],*p; int flag,top=-1; if(T!=NULL) { do { while(T!=NULL) { top++; St[top]=T; T=T-lchild; } p=NULL; flag=1; while(top!=-1flag) { T=St[top]; if(T-rchild==p) { printf(%c,T-data); top--; p=T; } else { T=T-rchild; flag=0; } } }while(top!=-1); printf(\n); } } 层次遍历二叉树,用 queue 数组充当顺序队列 void LevelOrder(Node *T) { Node *queue[TREEMAX], *p; int pre=-1, rear=-1; 树根结点先进队 queue[++pre]=T; 当队列不为空时,出队一个结点的同时将其左右孩子进队 while((pre-rear+TREEMAX)%TREEMAX!=0) { p=queue[++rear]; printf(%3c, p-data);  // 出队一个结点并输出 if(p-lchild!=NULL) queue[++pre]=p-lchild;  // 左孩子存在则进队 if(p-rchild!=NULL) queue[++pre]=p-rchild;  // 右孩子存在则进队 } } void list() { printf(\n); printf(\n

文档评论(0)

159****5521 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档