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小时内删除。