2014-12-11

来源:互联网 发布:邪恶下载软件 编辑:程序博客网 时间:2024/06/07 17:50

森林的前序遍历和二叉树的前序遍历结果相同,森林的后序遍历和二叉树的中序遍历结果相同。

当以二叉链表作树的存储结构时,树的先根遍历和后根遍历完全可以借用二叉树的前序遍历和中序遍历的算法来实现。



赫夫曼树

带权路径长度WPL 最小的二叉树称做赫夫曼树

两节点之间路径长度就是它们之间线的个数

树的路径长度是根节点到每个结点路径长度之和



构造赫夫曼树的赫夫曼算法描述:

1. 根据给定的n 个权值{ W1,,…,Wn }构成n 棵二叉树的集合F={ Tl,T2,…Tn},
其中每棵二叉树Ti 中只有一个带权为Wi 根结点,其左右子树均为空。
2 . 在F 中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且
置新的二叉树的根结点的权值为其左右子树上根结点的权值之和。
3 . 在F 中删除这两棵树,同时将新得到的二叉树加入F 中。
4. 重复2 和3 步骤,直到F 只含一棵树为止。这棵树便是赫夫曼树。


一般地,设需要编码的字符集为{d1,d2,…,dn } ,各个字符在电文中出现的次数或
频率集合为{ W1,W2, …,Wn} ,以d1,d2,...,dn 作为叶子结点,以Wl,W2,… ,Wn 作为相应叶
子结点的权值来构造一棵赫夫曼树。规定赫夫曼树的左分支代表0 ,右分支代表1 ,
则从根结点到叶子结点所经过的路侄分支组成的0 和1 的序列便为该结点对应字符的
编码,这就是赫夫曼编码。





多对多


图G(V,E)

在这里,每个数据元素叫一个顶点

顶点之间的关系叫边

注意:图不能为空

边集合可以为空


无向边 顶点之间的边没有指向(A,B)

无向图 所有边都是无向边的图


有向边也叫弧<A,B>


若不存在顶点到其自身的边 且每条边不重复出现 则这个图叫简单图


无向图中,若任意两个顶点之间都存在边,叫无向完全图

在有向图中,如果任意两个顶点之间都存在方向互为相反的两条弧,则称该图为有向完全图


带权的图通常称为网(Network)


顶点v 的度( Degree ) 是和v 相关联的边的数目,记为TD (V)

有向图中,以顶点v 为头的弧的数自称为v 的入度(InDegree) ,记为ID(v); 以v 为尾的弧的数目称为v 的出度( OutDegree ) ,记为
0D ( v);

第一个顶点到最后一个顶点相同的路径称为回路或环。序列中顶点不重
复出现的路径称为简单路径. 除了第一个顶点和最后一个顶点之外,其余顶点不重复
出现的回路,称为简单回路或简单环


邻接表 有向图以顶点弧尾记录的链表

逆邻接表 有向图以顶点弧头记录的链表

结合:十字链表

在边表中分别加入出边指针和入边指针

十字链表的数据元素由四个区域组成,分别为

tailvex 是指弧起点在顶点表的下标

headvex 是指弧终点在顶点表中的下标

headlink 是指入边表指针域,指向终点相同的下一条边,

tailink 是指出边表指针域,指向起点相同的下一条边。

如果是网,还可以再增加一个weight 域来存储权值。

0 0
原创粉丝点击