哈夫曼算法建立最优二叉树#include #include #include #include #define MAX_NUMBER_OF_TREE_NODES 20 // 树的结点的类型定义typedefstruct { 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); returntrue ; } // 初始化结点值,使全部为NULL void InitTreeNode(HTNode *treenodes) { int i=1 // 数组的首结点用来存数一些信息, 如weight 域用来存储节点的多少// 突然想到了一个好处就是: 等会我们几点不断减少的过程中可以用首结点的//weight来指示剩余结点的数目,做访问数组元素的界限treenodes[0]
weight=MAX_NUMBER_OF_TREE_NODES; treenodes[0]
lchild=N