本文主要是介绍哈夫曼树的介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
引入
概述
基本概念
示例
算法实现
存储结构
具体步骤
示例
初始化
合并
示例
代码整合:
//哈夫曼树的建立
//定义类型:权值+双亲结点+左右孩子结点
typedef struct {int weight;int parent;int lchild,rchild;
}Hnode,*huffmantree;
//建立
1.判断有结点:建空数组,初始为空输入权值 合并:找树中两个最小结点,改双亲,改左右孩子,改权值
2.否则返回函数头
void select(haffmantree t,int i-1,int &s1,int &s2){//后期补!!!!
}
void built(huffmantree t,int n){if(n<1) return; int m=2*n-1;t=new huffmantree[m+1];//下标由1开始存 for(int i=1;i<=m;++i){//初始 t[i].lchild=0;t[i].rchild=0;t[i].parent=0;}for(int i=1;i<=m;++i)cin>>t[i].weight;for(int i=n+1;i<=m;++i){select(t,i-1,s1,s2);//从1-i-1中找两个最小的结点,并返回编号//改双亲域t[s1].parent=i;t[s2].parent=i;//改孩子域t[i].lchild=s1;t[i].rchild=s2;t[i].weight=t[s1].weight+t[s2].weight;//改权值 }
}
这篇关于哈夫曼树的介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!