www.pudn.com > Huffman.rar > huffman_b.h
#ifndef _HUFFMAN_B_HEADER_001_
#define _HUFFMAN_B_HEADER_001_
#include "huffman_base.h"
// 使用《数据结构》(严蔚敏,吴伟民,1997,C语言版)
// 中给出的算法,将二叉树存放在连续空间里(静态链表),
// 空间的每个结点内仍有左子树、右子树、双亲等指针
class huffman_b :
public huffman_base
{
public:
huffman_b() {}
virtual ~huffman_b(void) {}
public:
typedef struct
{
unsigned long weight;
int parent, lchild, rchild;
}HTNode, *HuffmanTree;
public:
void generate_codes(int num, const unsigned long* weights);
protected:
// 在HT[1..n]中选择parent为0且weight最小的两个结点,返回其序号s1和s2
void select(HuffmanTree tree, int n, int& s1, int& s2);
};
#endif