软件工程二叉树的递归和非递归算法.docVIP

软件工程二叉树的递归和非递归算法.doc

  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文档。上传文档
查看更多
软件工程二叉树的递归和非递归算法

给出一个二叉树的前序序列和中序序列,写出其生成二叉树的递归和非递归算法(20) 递归算法: #include “studio.h” #define ERROR 0 //主函数 void?main()?{? ?BTNode?*t;??int?n=0;?? ?printf (?-?请输入二叉树各元素: \n); ??t=createbintree();? ? printf (\n\n?-?1.按先序遍历输出为:\n);???? preorder(t);??? ? printf (\n?????按中序遍历输出为:\n);?? ???inorder(t);??/*LNR?中序遍历*/? ?}??? typedef struct node { char data; struct?node?*lchild;? ??struct?node?*rchild; }BTNode; //创建二叉树 BTNode *createbintree() { BTNode *t; char x; scanf(“%c”,x); if(x=”#”){ t=NULL; } else { t=(BTNode *)malloc(sizeof(BTNode)); t-data=x; t-lchild=createbintree(); t-rchild=createbintree(); } } //先序遍历 void preorder(BTNode *t) { if(t!=NULL) { printf (“%c/t”,t-data);//访问节点 preorder(t-lchild); preorder(t-rchild); } } //中序遍历递归 void inorder(BTNode *t) { if(t!=NULL) { inorder(t-lchild); printf (“%c/t”,t-data); inorder(t-rchild); } } 二叉树非递归算法: #includestdio.h #includestdlib.h #includestring.h #define Stack_Size 20 ?/*主函数部分*/? void?main()?? {? loop:? BiTree?root=NULL;? CreateBiTree(root);?????? printf(PreOrder?traversal?is:\n);?PreOrder(root);? printf(\n);? printf(InOrder?traversal?is:\n);?InOrder(root);? printf(\n);? goto?loop;? } typedef struct binarytree { char data; struct binarytree *LChild,*RChlid; }BiTree,*BiTree; //定义顺序栈 typedef struct { BiTree data[Stack_Size]; int top; }SeqStack; /*初始化顺序栈S*/ void?InitStack(SeqStack?S)??? ?{? S.top=-1;? }? *判栈空*/ int?IsEmpty(SeqStack?S)???? {? return(S.top==-1??TRUE:FALSE);? }? /*进栈*/ int?Push(SeqStack?S,BiTree?x)??? ?{? if(S.top==Stack_Size-1) return(FALSE);????? S.top++;? S.data[S.top]=x;????? return(TRUE); ?}? ?/*出栈*/ int?Pop(SeqStack?S,BiTree?x)??? {? ????if(S.top==-1)? ????????return(FALSE);????? else??{? ??????x=S.data[S.top];?????????S.top--;? ????????return(TRUE);??? } } ?/*利用“扩展先序遍历”创建二叉链表*/? void?CreateBiTree(BiTree?bt)?? {? ?char?ch;? ?ch=getchar();??????/*调用getchar函数,需要用户输入字符,用户按回车键结束输入*/? ?if(ch==.)?bt=NULL;???? ?else? {??? bt=(BiTNode?*

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档