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