c++数据结构二叉树.docVIP

  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文档。上传文档
查看更多
c数据结构二叉树

#include stdio.h #include stdlib.h #define STACK_INIT_SIZE 10 //栈的初始长度 #define STACKINCREMENT 5 //栈的追加长度 typedef struct bitree{ char data; struct bitree *lchild,*rchild; }bitree; //二叉树结点定义 typedef struct { bitree **base; bitree **top; int stacksize; }sqstack; // 链栈结点定义top栈顶 base栈底 且栈元素是指向二叉树结点的二级指针 //建立一个空栈 int initstack(sqstack *s) {s-base=(bitree *)malloc(STACK_INIT_SIZE*sizeof(bitree)); //栈底指向开辟空间 if(!s-base) exit(1); //抛出异常 s-top=s-base; //栈顶=栈尾 表示栈空 s-stacksize=STACK_INIT_SIZE; //栈长度为开辟空间大小 return 1; } //进栈 int push(sqstack *s,bitree *e) {if(s-top-s-base=s-stacksize) //如果栈满 追加开辟空间 {s-base=(bitree *)realloc (s-base,(s-stacksize+STACKINCREMENT)* sizeof(bitree)); if(!s-base) exit(1); //抛出异常 s-top=s-base+s-stacksize; //感觉这一句没用 s-stacksize+=STACKINCREMENT;} *(s-top)=e;s-top++; //进栈 栈顶后移 return 1; } //出栈 int pop(sqstack *s,bitree **e) {if(s-top==s-base) return 0; //栈空 返回0 --s-top;*e=*(s-top); //栈顶前移 取出栈顶元素给e return 1;} //取栈顶 int gettop(sqstack *s,bitree **e) //去栈顶元素 注意top指向的是栈顶的后一个 {if(s-top==s-base) return 0; //所以 s-top-1 *e=*(s-top-1); return 1; } /*------------------------非递归-----先序建立二叉树----------------------------------*/ bitree *createprebitree() {char ch;bitree *ht,*p,*q; sqstack *s; s=malloc(sizeof(bitree)); //加上这一句为s 初始化开辟空间 ch=getchar(); if(ch!=#ch!=\n) /* 输入二叉树先序顺序 是以完全二叉树的先序顺序 不是完全二叉树的把没有的结点以#表示 */ {ht=(bitree *)malloc(sizeof(bitree)); ht-data=ch; ht-lchild=ht-rchild=NULL; p=ht; initstack(s); push(s,ht); //根节点进栈 while((ch=getchar())!=\n) // 算 {if(ch!=#) {q=(bitree *)malloc(sizeof(bitree)); // 法 q-data=ch; // if(p==*(s-top-1)) p-lch

文档评论(0)

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

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

1亿VIP精品文档

相关文档