标题:关于建立哈夫曼树
取消只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-481755-1-1.html




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

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