%%%%%%

字符串模式匹配算法--详解KMP算法

https://blog.csdn.net/zc474235918/article/details/40474525

http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html

%%%%%%

树的定义和基本术语

其实是一个递归的定义。每个有限集也是一个树。

树的抽象数据类型ADT

数据对象D:具有相同特征的数据元素的集合

数据关系R:

其他表示方法:

集合的圆圈方法、层次的目录

 二叉树

左右之分。有序树。

完全二叉树 节点数为10 的话,必须连续的1-10,中间不能断。

性质4中log为向下取整。

顺序结构:对满二叉树比较好。 非完全二叉树,没有元素就为空。空间浪费。

链域:就是地址

空链域就是没有孩子的地址。

n个节点有2n个链域。 有n-1个分支,每个分支就是一个地址,就是一个链域。2n-(n-1)=n+1个空链域。

遍历二叉树

先序就是先根。

遍历都是递归的思想。

上面:

函数指针作为函数参数传递:https://www.cnblogs.com/jainszhang/p/10704514.html

二叉链表的存储形式

的数据结构实现中序遍历:

和下面先序只是访问元素的时机不同。其他都相同。VIsit函数位置不同。

先序是入栈的时候就访问根节点。 中序是出栈的时候才访问节点。

线索二叉树

二叉树为非线性结构 用一种方法 让它线性化

线性序列  按照某一种遍历的方法 排列成一个顺序。

n个节点,肯定有n-1个分叉,有n-1个节点有唯一双亲,1个根节点没有双亲。

有2n个链域,所以2n-(n-1)个空链域。所以有n+1个空链域。

a + b * - - - - e / f

线索化的目的是给空的链域 变为 非空。 可以通过中序、先序等方法来实现线索化。

层次遍历:

树和森林

数组下标为双亲的位置。

数组存放data和右边一个指针域,为一个单链表,下标指向孩子的位置

孩子双亲表示法:

左边为双亲位置,右边为孩子位置,感觉这个图和上面二叉树的图不对应。

孩子兄弟表示法:

森林和二叉树的对应关系:

树和森林的遍历

下面一个例题很不错:

哈夫曼树以及其应用

注意:叶子节点是最外面的节点,度为0。

中间的叫分支节点。

权值作为叶子节点构造哈夫曼树。

简单的说就是不断找当前最小权值的两个树。

n个叶子节点。剩下节点为n-1个。共有2n-1个节点。为严格二叉树。

哈夫曼编码:左孩子为0,右边为1

数据结构——树、二叉树、森林、哈夫曼树、字符串模式匹配相关推荐

  1. 【数据结构Note5】- 树和二叉树(知识点超细大全-涵盖常见算法 排序二叉树 线索二叉树 平衡二叉树 哈夫曼树)

    文章目录 5.1 树和二叉树引入 5.1.1 树的概念 5.1.2 树的表示 5.1.3 树中基本术语 5.2 二叉树 5.2.1 概念 5.2.2 二叉树的性质 5.2.3 特殊的二叉树 5.2.4 ...

  2. 最优二叉树(哈夫曼树)知识点

    路径:在一棵树中从一个结点往下到孩子或孙子结点之间的通路 结点的路径长度:从根节点到该节点的路径上分支的数目 树的路径长度:树中每个结点的路径长度之和 结点的权:给树中的结点赋予一个某种含义的值,则该 ...

  3. Java数据结构和算法:哈夫曼树

    本章介绍哈夫曼树.和以往一样,本文会先对哈夫曼树的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现:实现的语言虽不同,但是原理如出一辙,选择其中之一进行了解即可.若 ...

  4. 由二叉树构造赫夫曼树

    赫夫曼树: 假设有n个权值{w1,w2,w3....},试构造一棵具有 n个叶子节点的二叉树,每个叶子节点带权为wi,则其中 带权路径长度最小的二叉树称为最优二叉树或者叫赫夫曼树. 构造赫夫曼树: 假 ...

  5. 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)

    数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...

  6. java 实现最优二叉树_哈夫曼树(最优二叉树)及其Java实现

    一.定义 一些定义: 节点之间的路径长度:在树中从一个结点到另一个结点所经历的分支,构成了这两个结点间的路径上的经过的分支数称为它的路径长度 树的路径长度:从树的根节点到树中每一结点的路径长度之和.在 ...

  7. 最优二叉树(哈夫曼树)Java实现

    此篇博客讲最优二叉树也叫哈夫曼树的原理,以及构建步骤,还有哈夫曼编码原理.建议有二叉树基础朋友学习交流.对二叉树基础可以看我的另外一篇博客二叉树的构建以及遍历 文章目录 哈夫曼树引出: 哈夫曼树原理及 ...

  8. 【数据结构与算法】-哈夫曼树(Huffman Tree)与哈夫曼编码

    超详细讲解哈夫曼树(Huffman Tree)以及哈夫曼编码的构造原理.方法,并用代码实现. 1哈夫曼树基本概念 路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径. 结点的路径长度:两 ...

  9. 深入学习二叉树(三) 霍夫曼树

    深入学习二叉树(三) 霍夫曼树 1 前言 霍夫曼树是二叉树的一种特殊形式,又称为最优二叉树,其主要作用在于数据压缩和编码长度的优化. 2 重要概念 2.1 路径和路径长度 在一棵树中,从一个结点往下可 ...

  10. 《数据结构与算法之哈夫曼树(Java实现)》

    说在前头: 本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正. ...

最新文章

  1. string :操作总结
  2. Windows 上搭建FTP服务器
  3. 7-19上午刷题未知点集合
  4. SharePoint 2010 - 如何导入\导出WebPart
  5. 数据库_初学语句 in的用法
  6. 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单
  7. VB控件注册 - 利用资源文件将dll、ocx打包进exe文件
  8. mysql 存储过程 风险_删除/恢复SQL server危险的存储过程方法
  9. Javascript高级程序设计——函数声明与函数表达式的区别
  10. Java、JSP宾馆入住管理系统的设计与实现
  11. 手机电视标准对峙激化
  12. java工具类_16 个超级实用的 Java 工具类
  13. 如何将已有图片做成透明水印_如何给图片制作透明水印
  14. vue、vant上传附件功能实现
  15. “腾讯再有本事,也要出海讨生活”
  16. xkcd目录_使用随机XKCD漫画作为您的桌面墙纸
  17. 1_01_GLib库入门与实践_GLib库简介
  18. 有些人 总是莫名其妙的得罪了
  19. 计算机协会素拓小游戏,计算机协会素质拓展策划书 (2)
  20. oracle field怎么翻译,field是什么意思_field的翻译_音标_读音_用法_例句_爱词霸在线词典...

热门文章

  1. [导入]rep_daqjcrb
  2. bash命令怎么在linux系统中使用
  3. 网络犯罪分子为何针对中小企业?—Vecloud微云
  4. linux 单个网卡配置多个IP
  5. python中字符串的常见操作方法
  6. Chapter 1(数据结构绪论)
  7. 目前微服务/REST的最佳技术栈
  8. SpringBoot集成jsp(附源码)+遇到的坑
  9. 经典shell面试题整理
  10. {面试题6: 重建二叉树}