数据结构3 特殊二叉树

作者: zhixin9001 | 来源:发表于2018-02-26 22:22 被阅读3次

请点击此处输入图片描述

1. 排序二叉树、最优二叉树、线索二叉树、平衡二叉树等是二叉树的特殊形式,分别有各自的用途,排序二叉树用于快速查找、最优二叉树用于无损压缩编码、线索二叉树通过保存结点的前驱后继信息以方便遍历、平衡二叉树通过改进排序二叉树提高了其整体查找效率。

2.对于最优二叉树用于压缩编码,非常不解树是如何用于编码的。查阅相关文章后有了大概的了解,最优二叉树是带权路径长度最短的二叉树。结点的带权路径长度即权值与路径的乘积。关于其在编码方面的应用,有一篇博文介绍地比较直观(http://blog.csdn.net/wo16fafafa/article/details/52420007),比如要传送内容为”abc

bcd cdd ddd

d”的报文,其中字母a,b,c,d出现的次数分别为1,2,3,7。在数据通信中,需要将传送的文字转换成二进制的字符串,用0,1码的不同排列来表示字符,如果字母只有a,b,c,d四个,可以用2位二进制编码,让00,01,10,11分别代表四位字母。但由于不同字母的使用频率不同,这样的等长编码方式会导致流量的浪费,而且现实中字母当然不止4个,于是可以在设计编码时,让使用频率高的用短码,使用频率低的用长码,以优化整个报文编码。

3. 上面所说的不等长编码的设计过程也就是霍夫曼树的构建过程。构建过程为:a,

当节点序列中的根节点数量多于一个时,从当前节点序列中选择两个权值最小的根节点,分别作为左右子节点,创建新的根节点;b,

从序列中删除上一步选择的两个根节点,将新创建的根节点加入序列。然后重复执行这两步。前面a,b,c,d的构建过程如下:

初始状态:四个节点,按照权值由小到大排列

请点击此处输入图片描述

第一步:选择两个权值最小的根节点,即a,b两节点,构建新根节点,规定左子节点权值不大于右子节点权值

请点击此处输入图片描述

第二步:按照规则,继续选择两个权值最小的根节点,构建新根节点

请点击此处输入图片描述

最终构建的霍夫曼树:

请点击此处输入图片描述

左分支看作0,右分支看作1,则a,b,c,d对应的编码为:a:000   b:001   c:01   d:1

整颗树的带权路径长度WPL=1*3+2*3+3*2+7*1=22

而定长编码的带权路径长度=(1+2+3+7)*2=26

参考资料:

http://blog.csdn.net/wo16fafafa/article/details/52420007

https://baike.baidu.com/item/%E5%93%88%E5%A4%AB%E6%9B%BC%E6%A0%91/2305769?fr=aladdin&fromid=1792010&fromtitle=%E6%9C%80%E4%BC%98%E4%BA%8C%E5%8F%89%E6%A0%91

相关文章

  • 数据结构导读目录

    数据结构(1)-常见数据结构数据结构(2)-栈和队列和Hash表数据结构(3)-树和二叉树的遍历数据结构(4)-二...

  • 数据结构3 特殊二叉树

    请点击此处输入图片描述 1.排序二叉树、最优二叉树、线索二叉树、平衡二叉树等是二叉树的特殊形式,分别有各自的用途,...

  • 数据结构 - 概要

    数组 链表 堆/栈/队列 树 数据结构 - 二叉树数据结构 - 二叉查找树数据结构 - 平衡二叉树数据结构 - A...

  • java堆排序

    什么是堆排序:图解堆排序堆排序:利用了堆这种数据结构堆数据结构:特殊的完全二叉树,因为具有以下的特点:1)每个结点...

  • 二叉树的总结

    1、二叉树的数据结构 2、二叉树的创建 树的结构: 输入:AB#C##D## ; 3、二叉树的遍历 二叉树的遍历分...

  • python-022-实现二叉树结构以及前序中序后序遍历

    二叉树是一种特殊的树,树是我们常用数据结构。因二叉树拥有多种优良特性,所以在实际应用中使用非常广泛。 这里我们讨论...

  • (5)树相关题目

    树是一种特殊的数据结构,包括二叉树、平衡树、B树、红黑树等众多类型。其定义为 二叉树中常见的算法题目均可以通过迭代...

  • 关于函数递归和迭代的转化, 及尾递归相关知识的接触和思考

    javascript实现数据结构: 树和二叉树,二叉树的遍历和基本操作 js 二叉树 【数据结构与算法】深入浅出递...

  • 二叉树非递归遍历

    二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有...

  • 直观理解:二叉堆和堆排序(Heap)

      堆(Heap)是计算机中一种特殊的数据结构,通常可以看成一个完全二叉树的数组对象【如果一个二叉树的深度为,除第...

网友评论

    本文标题:数据结构3 特殊二叉树

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