实验目的:
1.掌握二叉树的二叉链表存储结构。
2.掌握利用二叉树创建方法。
3.掌握二叉树的先序、中序、后序的递归实现方法。
4.掌握哈夫曼树的概念。
5.掌握哈夫曼树的构造过程。
6.掌握哈夫曼树编码。
7.掌握哈夫曼树译码。
实验内容:
1.在计算机中创建如附图1-1所示的二叉树,分别对它进行中序、先序、后序遍历,并输出遍历结果。注:采用二叉链表作为二叉树的存储结构。
2.输入n个叶子结点的权值构造哈夫曼树;根据哈夫曼树构造哈夫曼编码,以指向字符串的指针数组来存放,从叶子到根逆向求每个叶子结点的哈夫曼编码;对密文完成解码工作。注:n个叶子结点的权值。
实验要求:
1.编写创建如附图1-1所示二叉树的函数,函数名:create。
2.编写递归实现二叉树的中序、先序和后序遍历算法。函数名分别为inorder,preorder,postorder。
3.编写主函数测试以上二叉树的创建和遍历函数。
4.编写哈夫曼构造函数。
5.编写哈夫曼编码函数和解码函数。
6.编写主函数构造哈夫曼树,并显现编码和解码功能测试。
难点:
实验一:本实验的难点在于树的创建
让我们来分析一下
一棵树可以通过任意结点遍历整树,我们选择根结点指针作为返回值
需要输入插入的数据ch 对于该数的指针信息用队列进行存储 对于队列 需要设置front和rear 然后需要临时的结点s和存放根结点的root
输入需要的数据
然后判断输入的字符是否表示结束,如果不表示结束的话 再将其打印到屏幕上(这步操作方便看所有结点的信息)
将新申请的结点地址存放在队列中
判断rear是否为1 如果为1 也就是队列指向第一个结点 也就是树的根结点
如果不为1的话 也就是根结点的子树 则
继续输入ch,并最终返回
综上所述:实验一的全部代码应为:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!