哈夫曼算法建立最优二叉树.doc哈夫曼算法建立最优二叉树
#include<>
#include<>
#include<>
#include<string>
#define MAX_NUMBER_OF_TREE_NODES 20
//树的结点的类型定义
typedef struct
{
unsigned int weight;
unsigned int parent,lchild,rchild;
}HTNode,*HuffmanTree;
//子函数的声明部分
void InitTreeNode(HTNode);
void CinWeightForTreeNode(HTNode);
void GiveOrderForTreeNode(HTNode);
void CopyTreeNodeOrTree(HTNode,HTNode);
int main()
{
//定义将要用于构造哈弗曼树的结点
HTNode TreeNodes[MAX_NUMBER_OF_TREE_NODES+1];
//调用函数初始化数组结点
InitTreeNode(TreeNodes);
//由用户输入各个结点的权值
CinWeightForTreeNode(TreeNodes);
//对数组中的结点进行排序
GiveOrderForTreeNode(TreeNodes);
return true;
}
//初始化结点值,使全部为NULL
void InitTreeNode(HTNode *treenodes)
{
int i=1
//数组的首结点用来存数一些信息,如weight域用来存储节点的多少
//突然想到了一个好处就是:等会我们几点不断减少的过程中可以用首结点的
//weight来指示剩余结点的数目,做访问数组元素的界限
treenodes[0].weight=MAX_NUMBER_OF_TREE_NODES;
treenodes[0].lchild=NULL;
treenodes[0].parent=NULL;
treenodes[0].rchild=NULL;
for(;i<=MAX_NUMBER_OF_TREE_NODES;i++)
{
treenodes[i].weight=0;
treenodes[i].lchild=0;
treenodes[i].rchild=0;
treenodes[i].parent=0;
}
}
void CinWeightForTreeNode(HTNode *treenodes)
{
int i=1;
cout<<"请输入每个结点的权值:"<<endl;
for(;i<=MAX_NUMBER_TREE_NODES;i++)
{
cout<<"第"<<i<<"个结点的权值是:"<<endl;
cin>>treenodes[i].weight;
}
}
void GiveOrderForTreeNode(HTNode *treenode
哈夫曼算法建立最优二叉树 来自淘豆网m.daumloan.com转载请标明出处.