xxx大学实验报告
课程名称二叉树的遍历及应用实验报告 数据结构 实验项目 实验二 非线性结构(一)——树
院 系 信息学院计类系 专业 计类1501
姓 名 学 号
指导老师 日 期
批改日期 成 绩
一 实验目的
1.掌握二叉树的建立与递归遍历算法。
2.理解哈夫曼树及其应用;掌握生成哈夫曼树的算法;哈夫曼编码;哈夫曼译码。
二 实验内容及要求
实验内容:下列两题二选一:
1.实现二叉树的建立与递归遍历算法;
2.建立huffman编码树;编码指定字符串;译码指定码流为字符串。
实验要求:
题目1:键盘输入数据;屏幕输出运行结果。
题目2:键盘输入数据;屏幕输出运行结果。运行显示结果为:输入一个字符串,生成码流; 输入码流,译码为字符串。
三 实验过程及运行结果
#include<stdio.h>
#include <malloc.h>
#include <conio.h>
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node *LChild;
struct Node *RChild;
}BitNode,*BitTree;
void CreatBiTree(BitTree *bt)
{
char ch;
ch=getchar();
if(ch=='.')
*bt=NULL;
else
{
*bt=(BitTree)malloc(sizeof(BitNode));
(*bt)->data=ch;
CreatBiTree(&((*bt)->LChild));
CreatBiTree(&((*bt)->RChild));
}
}
void Visit(char ch)
{
printf("%c ",ch);
}
void PreOrder(BitTree root)
{
if (root!=NULL)
{
Visit(root ->data);
PreOrder(root ->LChild);
PreOrder(root ->RChild);
}
}
void InOrder(BitTree root)
{
if (root!=NULL)
{
InOrder(root ->LChild);
Visit(root ->data);
InOrder(root ->RChild);
}
}
void PostOrder(BitTree root)
{
if(root!=NULL)
{
PostOrder(root ->LChild);
PostOrder(root ->RChild);
Visit(root ->data);
}
}
void main()
{
BitTree T;
int h;
int layer;
int treeleaf;
layer=0;
printf("请以先序遍历序列输入二叉树中的元素,其中.代表空子树:\n");
CreatBiTree(&T);
printf("先序遍历序列为:");
PreOrder(T);
printf("\n中序遍历序列为:");
InOrder(T);
printf("\n后序遍历序列为:");
PostOrder(T);
}
四 调试情况、设计技巧及体会
建立这个二叉链表是按照完全二叉树的性质,输入数据的时候应该完全按照完全二叉树的编号顺序输入数据,不然会造成输出错误或者代码不能正常运行。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论