二叉树排序算法指南.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告 课程名称:数据结构实验课程 实验四、串的基本操作练习 一、实验目的 1. 掌握二叉树的存储实现 2. 掌握二叉树的遍历思想 3. 掌握二叉树的常见算法的程序实现? VC++6.0 三、实验内容 1.输入字符序列,建立二叉树的二叉链表结构。(可以采用先序序列) 2.实现二叉树的先序、中序、后序的递归遍历算法。 3.实现二叉树的先序、中序、后序的非递归遍历算法。 4.求二叉树的高度。 5.求二叉树的结点个数。 6.求二叉树的叶子结点的个数。分别编写实现上述算法的子函数,并编写一个主函数,在主函数中设计一个简单的菜单,分别调用上述子函数。 1.打开vc,新建文本,命名二叉树算法,编写代码。 2.编写代码: #include stdio.h #include stdlib.h #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 int i=0; /*--------------------------------------建立堆栈------------------------------------------*/ typedef struct BiTNode { char data; struct BiTNode *lchild,*rchild; } BiTNode,*BiTree;//树类型 typedef struct SqStack { BiTNode *base; BiTNode *top; int stacksize; } SqStack;//栈类型 void InitStack(SqStack *S)//创建二叉树 { S-base=(BiTNode*)malloc(STACK_INIT_SIZE*sizeof(BiTNode)); S-top=S-base; S-stacksize=STACK_INIT_SIZE; } void Push(SqStack *S,BiTNode e)//进栈 { if(S-top - S-base = S-stacksize)//如果栈空间不足 { S-base=(BiTNode*)realloc(S-base,(S-stacksize+STACKINCREMENT)*sizeof(BiTNode)); S-top=S-base+S-stacksize; S-stacksize+=STACKINCREMENT; } *(S-top)=e; S-top++; } BiTNode Pop(SqStack *S)//出栈 { S-top --; return *S-top; } int StackEmpty(SqStack *S)//判断栈是否非空 { if(S-top == S-base ) return 1; else return 0; } /*---------------------------------------------递归部分-------------------------------------------*/ BiTree Create(BiTree T)//建立二叉树 { char ch; ch=getchar(); if(ch==#) T=NULL; else { if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) printf(申请内存空间失败!); T-data=ch; T-lchild=Create(T-lchild); T-rchild=Create(T-rchild); } return T; } int Sumleaf(BiTree T)//计算叶子节点 { int sum=0,m,n; if(T) { if((!T-lchild)(!T-rchild)) sum++; m=Sumleaf(T-lchild); sum+=m; n=Sumleaf(T-rchild); sum+=n; } return sum; } /*int Sumleaf(BiTree T)//老师课堂上的计算叶子数的代码,没有问题

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档