武汉纺织大学数据结构实验报告2.docVIP

  • 227
  • 0
  • 约 14页
  • 2017-05-21 发布于浙江
  • 举报
武汉纺织大学数据结构实验报告2

武汉纺织大学《数据结构》实验报告 班级: 专业 班 姓名: 序号: 实验时间: 年 月 日 指导教师: 实验二:二叉树操作及应用 一、实验目的: 1、掌握二叉树的基本概念、基本操作以及各种存储结构。 2、掌握二叉树的多种遍历方法。 2、掌握哈夫曼树以及哈夫曼编码的求取过程。 二、实验内容: 1、编写一个程序,生成一棵二叉树并进行基本操作。 实验步骤: ①、在Java语言编辑环境中新建程序,输入程序内容,并保存和编译; ②、运行程序,从键盘输入二叉树各个结点数据,参考书本173页【例6.1】; ③、显示菜单如下: 1——先序遍历 2——中序遍历 3——后序遍历 4——层次遍历 5——求结点总数 6——求高度 0——退出 ④、输入菜单选项,进行相应操作并输出结果。 ⑤可参考程序为:172页先序、中序、后序遍历;174页求结点个数、求高度;185页层次遍历。 2、编写一个程序,构造哈夫曼树并获取哈夫曼编码。 实验步骤: ①、在Java语言编辑环境中新建程序,参考书本205-207页程序内容,并保存和编译; ②、运行程序,根据指定权值,建立哈夫曼树; ③、输出哈夫曼树存储结构信息; ④、输出各个哈夫曼编码。 ⑤、如有能力,请将此程序修改为:从键盘上输入权值,并构造哈夫曼树、获取哈夫曼编码。 3、编写程序,实现对二叉树的中序线索化操作。 实验步骤: ①、在Java语言编辑环境中新建程序,参考书本190-193页程序内容,并保存和编译; ②、运行程序,建立二叉树存储结构; ③、对二叉树进行中序线索化,建立中序线索二叉树; ④、输出中序遍历序列。 三、操作步骤: 1.二叉树 (1)接口类BinaryTTree.java package tree; public interface BinaryTTreeT {//二叉树接口,二叉树抽象数据类型 boolean isEmpty();//判断二叉树是否为空 int count();//返回二叉树的结点个数 int height();//返回二叉树的高度 void preOrder();//先根次序遍历二叉树 void inOrder();//中根次序遍历二叉树 void postOrder();//后根次序遍历二叉树 void levelOrder();//按层次遍历二叉树 BinaryNodeT search(T key);//查找并返回首次出现的关键字为key元素结点 BinaryNodeT getParent(BinaryNodeT node);//返回node的父母结点 void insertRoot(T x);//插入元素x作为根节点 BinaryNodeT insertChild(BinaryNodeT p,T x,boolean leftChild);//插入孩子节点 void removeChild(BinaryNodeT p,boolean leftChild);//删除p结点的左或右子树 void removeAll();//删除二叉树 }package tree; public class BinaryNodeT {//二叉树的二叉链表结点类 public T data;//数据域,存储数据元素 public BinaryNodeT left,right;//链域,分别指向左、右孩子结点 //构造结点,参数分别指定元素和左、右孩子结点 public BinaryNode(T data,BinaryNodeTleft,BinaryNodeT right){ this.data = data; this.left = left; this.right = right; } public BinaryNode(T data){this(data,null,null);}//构造指定值的叶子节点 public BinaryNode(){this(null,null,null);} }package tree; //二叉树类,实现BinaryTreeT接口,泛型T指定节点的元素类型 public class BinaryTreeT implements BinaryTTreeT { public BinaryNodeT root; public BinaryTree(){this

文档评论(0)

1亿VIP精品文档

相关文档