图 最小支撑树

图(Graph)由顶点(Node)和边(Edge)构成,可分为有向图和无向图,带权图和无权图储存方式主要有两种,邻接矩阵或邻接链表。下面的代码是我用邻接矩阵法储存的图。

阅读更多

哈夫曼树

对一棵树的叶子全部赋权值,那么权值乘上叶子的高度的和最小的树就是哈夫曼树。
构造哈夫曼树的方法如下:
(1)令S={ w1,w2,…,wt }
(2)从S中取出两个最小的权wi和wj,画结点vi,带权wi,画结点vj,带权wj。画vi和vj的父亲v,连接vi和v,vj和v,令v带权wi+wj
(3)令S = (S - { wi,wj })∪{ wi+wj }
(4)判断S是否只有一个元素,若是,则停止,否则重复(2)(3)(4)。

这样的话,构造一棵哈夫曼树的C++代码就不难写了。

阅读更多