C++ 哈夫曼树的创建
一、任务
输入 n 个数,创建一颗含 n 个叶子结点的哈夫曼树
遍历这这棵哈夫曼树
二、代码实现
1、HufTree.h
文件
#ifndef HUFTREE_H
#define HUFTREE_H
#include <iostream>
#include <iomanip>
using namespace std;
class HufNode
{
public:
int weight; //结点权值
int parent, lchild, rchild; //结点的父、左孩子、右孩子下标
};
class HufTree
{
public:
static void Create_HufTree(HufNode*&, int); //创建哈夫曼树
static void Travel_HufTree(HufNode*); //遍历哈夫曼树
};
void Select(HufNode*& nt, int m, int& s1, int& s2) //在 1 ~ i - 1 中选择两个无父结点且权值最小的结点,返回下标s1,s2
{
int minum1 = 1e5, minum2 = 1e5;
for(int i = 1; i <= m; i++)
{
if(nt[i].weight < minum1 && nt[i]