内容拓展:
树形结构包括:
退化树(链表)
二叉树
哈夫曼树
满二叉树
完全二叉树
平衡二叉树
表达式树
红黑树
B+
B-
AVL
...
1.二叉树的组成
根节点
子节点(左字节点,右子节点,双亲节点)
叶子节点(终端节点)
树的最大深度:有少层深度就是多少
树的最大宽度:有多少个叶子节点
2.哈夫曼二叉树的特点
最优的带权路径。
根节点到叶子节点的路径长度*权重之和
路径:从根节点到叶子节点的路径长度
路径长度就是深度-1
3.编程实现
1.输出哈弗曼树及码表
2.将哈夫曼二叉树绘制到界面上(见《绘图项目》)
首先定义节点类
定义的数据域为一个Data类 用来存储字符和字符的频率
以下为Node类和Data类
[img]http://dl2.iteye.com/upload/attachment/0109/1964/60153c4f-02ab-31d6-886c-459db9c9c549.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0109/1966/0afbd1e0-80dd-3566-b572-a4c848824056.png[/img]
接下来定义HFMtree类
实现步骤:
1.统计每一个字符出现的次数(频率)
2.将数据封装到节点中,再将节点存入到链表(数组队列)中
3.对链表中的数据根据次数进行排序
4.移除最小两个次数的节点对象,创建一个双亲节点,再将双亲节点添加到链表中
5.重复3,4;直到链表中只有一个节点的时候,那么该节点为哈夫曼二叉树的根节点。
6.遍历哈夫曼二叉树,输出信息
[img]http://dl2.iteye.com/upload/attachment/0109/1968/08a0b581-c6f9-3e4f-ac6d-e12c8fde019b.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0109/1970/3dc57f0f-da91-3640-8a7e-6870c4a64280.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0109/1972/ad07f2f9-d5e1-308c-b20e-bee1a9be8887.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0109/1974/6be306da-7001-3ef1-98a0-32c7b55f8dbc.png[/img]
树形结构包括:
退化树(链表)
二叉树
哈夫曼树
满二叉树
完全二叉树
平衡二叉树
表达式树
红黑树
B+
B-
AVL
...
1.二叉树的组成
根节点
子节点(左字节点,右子节点,双亲节点)
叶子节点(终端节点)
树的最大深度:有少层深度就是多少
树的最大宽度:有多少个叶子节点
2.哈夫曼二叉树的特点
最优的带权路径。
根节点到叶子节点的路径长度*权重之和
路径:从根节点到叶子节点的路径长度
路径长度就是深度-1
3.编程实现
1.输出哈弗曼树及码表
2.将哈夫曼二叉树绘制到界面上(见《绘图项目》)
首先定义节点类
定义的数据域为一个Data类 用来存储字符和字符的频率
以下为Node类和Data类
[img]http://dl2.iteye.com/upload/attachment/0109/1964/60153c4f-02ab-31d6-886c-459db9c9c549.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0109/1966/0afbd1e0-80dd-3566-b572-a4c848824056.png[/img]
接下来定义HFMtree类
实现步骤:
1.统计每一个字符出现的次数(频率)
2.将数据封装到节点中,再将节点存入到链表(数组队列)中
3.对链表中的数据根据次数进行排序
4.移除最小两个次数的节点对象,创建一个双亲节点,再将双亲节点添加到链表中
5.重复3,4;直到链表中只有一个节点的时候,那么该节点为哈夫曼二叉树的根节点。
6.遍历哈夫曼二叉树,输出信息
[img]http://dl2.iteye.com/upload/attachment/0109/1968/08a0b581-c6f9-3e4f-ac6d-e12c8fde019b.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0109/1970/3dc57f0f-da91-3640-8a7e-6870c4a64280.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0109/1972/ad07f2f9-d5e1-308c-b20e-bee1a9be8887.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0109/1974/6be306da-7001-3ef1-98a0-32c7b55f8dbc.png[/img]