美文网首页
树和森林

树和森林

作者: 北风知我意 | 来源:发表于2019-06-22 21:52 被阅读0次

树和森林

树的存储结构:

双亲表示法

孩子表示法

利用图表示树

孩子兄弟表示法(二叉树表示法):链表中每个结点的两指针域分别指向其第一个孩子结点和下一个兄弟结点

将树转化成二叉树:右子树一定为空

加线:在兄弟之间加一连线

抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系

旋转:以树的根结点为轴心,将整树顺时针转45°

森林转换成二叉树:

将各棵树分别转换成二叉树

将每棵树的根结点用线相连

以第一棵树根结点为二叉树的根

树与转换后的二叉树的关系:转换后的二叉树的先序对应树的先序遍历;转换后的二叉树的中序对应树的后序遍历

哈弗曼树/霍夫曼树

一些概念

路径:从一个祖先结点到子孙结点之间的分支构成这两个结点间的路径;

路径长度:路径上的分支数目称为路径长度;

树的路径长度:从根到每个结点的路径长度之和。

结点的权:根据应用的需要可以给树的结点赋权值;

结点的带权路径长度:从根到该结点的路径长度与该结点权的乘积;

树的带权路径长度=树中所有叶子结点的带权路径之和;通常记作  WPL=∑wi×li

哈夫曼树:假设有n个权值(w1,  w2, … , wn),构造有n个叶子结点的二叉树,每个叶子结点有一个 wi作为它的权值。则带权路径长度最小的二叉树称为哈夫曼树。最优二叉树。

前缀码的定义:在一个字符集中,任何一个字符的编码都不是另一个字符编码的前缀。霍夫曼编码就是前缀码,可用于快速判断霍夫曼编码是否正确。霍夫曼树是满二叉树,若有n个节点,则共有(n+1)/2个码子

给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为霍夫曼树(Huffman Tree)。霍夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

假设哈夫曼树是二叉的话,则度为0的结点个数为N,度为2的结点个数为N-1,则结点总数为2N-1。哈夫曼树的结点个数必为奇数。

哈夫曼树不一定是完全二叉树,但一定是最优二叉树。

若度为m的哈夫曼树中,其叶结点个数为n,则非叶结点的个数为[(n-1)/(m-1)]。边的数目等于度。

相关文章

  • 树和森林

    一、树的存储 1. 双亲表示法 双亲表示法使用一个顺序表来存储树中的节点,同时为表示节点间的关系,在每个节点中附设...

  • 树和森林

  • 树和森林

    1. 树:递归的定义,节点不相交。 2.森林:多个不相交的树的集合 树的表示法: 图 广义表 树的存储:比较...

  • 树和森林

    树和森林 树的存储结构: 双亲表示法 孩子表示法 利用图表示树 孩子兄弟表示法(二叉树表示法):链表中每个结点的两...

  • 树和森林(六)

    1. 树的存储结构 双亲表示法孩子表示法利用图表示树孩子兄弟表示法(二叉树表示法):链表中每个结点的两指针域分别指...

  • Java_二叉树概念及基本操作

    树、森林和二叉树的转换 树转换为二叉树 森林转换为树 二叉树转换为树 二叉树转换为森林 代码

  • 树和森林,森林和二叉树的转换,树和森林的遍历

    1 树的存储结构 1)双亲表示法 用一组连续的存储空间来存储树的结点,同时在每个结点中附加一个指数器(整数域),用...

  • 树和森林的遍历

    树的遍历 先根遍历若树非空,则先访问根结点,再按从左到右的顺序遍历根结点的每棵子树树先根遍历:RADEBCFGHK...

  • 决策树与随机森林及其在SparkMllib中的使用

    一.概念 决策树和随机森林:决策树和随机森林都是非线性有监督的分类模型。 决策树是一种树形结构,树内部每个节点表示...

  • 杉树

    家乡山里,杉树,松树和其它树,数量上相对占森林比重大,原始大森林杂树品种杂,杉树和松树突出,多!显得随和,...

网友评论

      本文标题:树和森林

      本文链接:https://www.haomeiwen.com/subject/yswdlqtx.html