- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
實验六二叉树及应用的实验
实验六 二叉树及应用的实验
【实验目的】掌握二叉树的左右链存储实现,二叉树的建立方法,二叉树的遍历算法,哈夫曼树的程序实现。
【实验说明】
存储结构定义及库文件
# include stdio.h
# include stdlib.h
# define TRUE 1
# define FALSE 0
#define Stack_Size 50
typedef char DataType;
typedef struct node {
DataType data;
struct node *lchild,*rchild;
}BiTNode,*BiTree;
建立二叉树
void CreateBiTree(BiTree *bt )
{ char ch;
ch=getchar();
if(ch==.) *bt=NULL;
else
{
*bt=(BiTree)malloc(sizeof(BiTNode));
(*bt)-data=ch;
CreateBiTree(((*bt)-lchild));
CreateBiTree(((*bt)-rchild));
}
}
先序递归遍历二叉树
void PreOrder(BiTree root)
//root指向二叉树根结点
{ if(root!=NULL)
{
printf(%c,root-data);
PreOrder(root-lchild);
PreOrder(root-rchild);
}
}
4、中序非递归遍历二叉树
void inorder(BiTree root)
{
BiTNode *p;
int top;
BiTree S[Stack_Size];
top=0;
p=root;
//printf(ZYZ\n);
do{
while(p!=NULL)
{
if(topStack_Size-1) {printf(栈满\n);return;}
else {top=top+1;
S[top]=p;
p=p-lchild;
};
}
if (top!=0)
{p=S[top];
top=top-1;
printf(%c,p-data);
p=p-rchild;
}
}while(p!=NULL||top!=0);
}
主控菜单处理调试程序
void main( )
{
BiTree T=NULL;
int xz=1;
char ch;
while(xz) {
printf( 二叉树的建立及遍历\n);
printf(==========================\n);
printf( 1、建立二叉树存储结构 \n);
printf( 2、二叉树的前序遍历(递归)\n);
printf( 3、二叉树的中序遍历(非递归)\n);
printf( 0、退 出 系 统 \n);
printf(===========================\n);
printf( 请选择:0--3 );
scanf(%d,xz);
switch(xz)
{ case 0: printf(再见!\n);
return;
case 1: ch=getchar();
printf(按扩展先序遍历序列输入二叉树各结点值:);
CreateBiTree(T);
printf(\n二叉树的链式存储结构建立完成!\n);
printf(\n);
break;
case 2: printf(二叉树先序遍历序列为:);
if(T) PreOrder(T);
else printf(\n空树);
printf(\n);
printf(\n);
break;
case 3: printf(二叉树中序遍历序列为:);
inorder(T);
printf(\n);
break;
}
}
return;
}//main
【实验内容】
⑴二叉树的遍历算法(非递归实现先序遍历,用递归实现中序遍历,用非递归实现后序遍历,层次遍历)
⑵二叉树采用二叉链表方式存储,找到二叉树中度为0的结点个数。
⑶二叉树采用二叉链表方式存储,找到
您可能关注的文档
最近下载
- 电工电子技术(曹建林)全套PPT课件.pptx
- 《民宿文化与运营》课件——第四章 民宿建设.pptx VIP
- 2022版《医疗器械生产监督管理办法》考核试题及答案.docx VIP
- 10KV配电箱验收流程及规范.docx VIP
- 污水处理厂BOT项目投标文件.doc VIP
- 2025届上海浦东新区高三一模高考历史模拟试卷(含答案解析).pdf VIP
- 舒蕾上市谈判手册.docx VIP
- DB4103T 129-2021 产(商)品检验检测机构服务规范.pdf VIP
- 七猫中文网投稿申请表.pdf VIP
- 《C语言程序设计 第4版》 课件全套 索明何 第1--8章 C语言程序设计入门---应用软件设计.pptx
文档评论(0)