| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1470 人关注过本帖
标题:关于建立哈夫曼树
取消只看楼主 加入收藏
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
结帖率:100%
收藏
 问题点数:0 回复次数:0 
关于建立哈夫曼树
程序代码:
struct huffmanTree {
    long count;//计数,实际为树中的权值
    int parent;//父节点
    int leftChild, rightChild;//左、右孩子
    std::string huffmanString;//哈夫曼编码
};

上面是 哈夫曼树的结构体定义
建立两个数组
huffmanTree arr1[32];
huffmanTree arr2[63];//从 arr1 中读取元素并且建立树,其中父亲节点的哈夫曼编码为"NO_VALUE",元素最多为 arr1 数组中的 (元素个数 * 2 - 1)

当读取完 arr1 中的所有元素的时候,arr2 需要处理哈夫曼编码值为 "NO_VALUE" 并且没有父亲节点的元素,直到 arr2 中只剩下一个父亲节点没有的元素,也就是哈夫曼树中最顶端的元素
这个时候应该选取两个 count 最小的元素相加作为这两个元素的父亲节点,还是只需要选择最前面两个没有父亲节点并且哈夫曼编码为 "NO_VALUE" 的 count 值相加作为父亲节点呢?
或者说根本没有处理这些元素的必要,直接生成哈夫曼编码即可呢?
搜索更多相关主题的帖子: 建立 哈夫曼 节点 编码 元素 
2017-10-25 17:24
快速回复:关于建立哈夫曼树
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025789 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved