电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

哈夫曼算法建立最优二叉树VIP免费

哈夫曼算法建立最优二叉树_第1页
1/6
哈夫曼算法建立最优二叉树_第2页
2/6
哈夫曼算法建立最优二叉树_第3页
3/6
哈夫曼算法建立最优二叉树#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=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<< " 请输入每个结点的权值:" <>treenodes[i].weight; } } void GiveOrderForTreeNode(HTNode *treenodes) { HTNode TemporarySave; //CopyTreeNodeOrTree(treenodes[1],TemporarySave); int i=2; int count=1; int j=treenodes[0].weight; for (;i<=j;i++) { if (treenodes[count].weight>treenodes[i].weight) count=i; } CopyTreeNodeOrTree(treenodes[count],TemporarySave); for (;i

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

哈夫曼算法建立最优二叉树

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群