写在前面:

 对于数据结构的学习,注定绕不开“树”这一起着重要作用的数据结构。“树”在整个数据结构的学习过程中具有举足轻重的地位,而与“树”相关的知识点,往往较为晦涩难懂且容易混淆、忘记。为此,打算根据自己的所学与所思,总结出较为常用的树的相关知识点,同时还记录了自动机的相关的知识,一方面用作自己的备忘录,另一方面,用作分享。为此,如有不对的地方,希望各位能够不吝指出。

ps:点击相关的标题,即可进入相关的博文查看与其相关的知识点,这篇博文更多的是作为目录使用

  1. 树与二叉树:树(英语:tree)是一种抽象数据类型(ADT)或是作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成的一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。树形结构中数据元素之间具有一对多的逻辑关系,它反映了数据元素之间的层次关系,一个数据元素可以有多个后继,但最多只能有一个前驱。二叉树是树里面的一个特殊形态,每个节点最多只有两个分支(不存在分支度大于2的节点)。通常分支被称作“左子树”和“右子树”。二叉树的分支具有左右次序,不能颠倒。该博文主要介绍了树与二叉树之间相关的概念

  2. 二叉树:该博文主要介绍了二叉树的存储结构及其常见的操作,并给出了其相关代码

  3. 树、二叉树与森林之间的转换:树与二叉树之间,森林与二叉树之间可以相互转换,且这种转换是一一对应的。树与森林转化为二叉树之后,森林或树的相关操作都转换为二叉树的操作。该博文主要介绍了树与二叉树、森林与二叉树之间的转换过程及其相关的代码

  4. 二叉查找树(BST):二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tree),二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低。该博文主要介绍二叉查找树的相关内容。

  5. 哈弗曼树与哈弗曼编码:哈弗曼(Huffman)树是一种在编码技术方面得到广泛应用的二叉树,它同时也是一种最优二叉树。该博文主要介绍了哈弗曼树和哈弗曼编码的相关内容

  6. 图相关的最小生成树:该博文主要用于讲解图相关的两个最小生成树算法,即prim算法和Kruskal算法的思想及其实现

  7. 平衡二叉树(AVL):平衡二叉树(Balanced Binary Tree)又称为AVL树,它或是一棵空树,或是一棵左子树和右子树都是平衡二叉树,且左子树和右子树深度之差的绝对值不超过1的树。该博文主要讲解了平衡二叉树的相关知识点

  8. 红黑树:红黑树(Red Black Tree) 是一种自平衡二叉查找树,其是平衡二叉树的一种实现。在红黑树上的操作都有着良好的最坏情况下的运行时间,即能够保证O(logN)的时间内完成查找,插入和 删除操作,N表示的是红黑树中节点的个数。该博文主要用于讲解红黑树的相关知识点及其实现

  9. Treap树:Treap=Tree+Heap。Treap是一棵二叉排序树,它的左子树和右子树分别是一个Treap,和一般的二叉排序树不同的是,Treap记录一个额外的数据,就是优先级。Treap在以关键码构成二叉排序树的同时,还满足堆的性质(在这里我们假设节点的优先级大于该节点的孩子的优先级)。但是这里要注意的是Treap和二叉堆有一点不同,就是二叉堆必须是完全二叉树,而Treap不一定是完全二叉树。该博文主要讲解了Treap树相关的知识点及其实现

  10. 伸展树:伸展树(Splay Tree),也叫分裂树,是一种二叉排序树,它能在O(logN)内完成插入、查找和删除操作。在伸展树上的一般操作都基于伸展操作:假设想要对一个二叉查找树执行一系列的查找操作,为了使整个查找时间更小,被查频率高的那些条目就应当经常处于靠近树根的位置。于是想到设计一个简单方法, 在每次查找之后对树进行重构,把被查找的条目搬移到离树根近一些的地方。伸展树应运而生。本博文介绍了伸展树的相关的知识点及期权实现

  11. B-树:B-tree树即B树,B即Balanced,平衡的意思。B-树是一种多路搜索树(并不一定是二叉的),在文件系统中,B-树已经成为索引文件的一种有效结构,并得到了广泛的应用。本博文主要用于讲解B-树相关的知识点及其实现

  12. B+树:B+树是一种树型数据结构,其是一个n叉排序树,每个节点通常有多个孩子。B+ 树通常用于数据库和操作系统的文件系统中。B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。本博文讲解了B+树相关的知识点以及其实现

  13. 单词查找树(Trie):trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。Trie可以看作是一个确定有限状态自动机。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。
    Trie这个术语来自于retrieval。根据词源学。本博文主要讲解了单词查找树的相关知识及其实现。

  14. 状态机:有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。该博文讲解了状态机的相关知识点及其应用示例。

KandQ:那年,那树,那些知识点的更多相关文章

  1. 【树剖求LCA】树剖知识点

    不太优美但是有注释的版本: #include<cstdio> #include<iostream> using namespace std; struct edge{ int ...

  2. asp.net core 排序过滤分页组件:sieve(2)表达式树的复习

    在Sieve组件中使用了很多关于表达式树的知识,但在我们日常的工作中写表达式树的机会是非常少的,至少在我的编程生涯中没怎么写过表达式树(可能也就是3,4次).所以,为了能够看懂Sieve里面的源代码, ...

  3. 第一阶段集训(这篇先写写tarjan以及圆方树)

    第一阶段的集训结束了w,不得不说oi太长时间不整是会退步的. 怎么说好呢,集训这几天过的很充实,知识收货很多,题调的也不少,自己的目标更明确了吧,不过这几天集训也是可以看出蒟蒻就是蒟蒻,还是太菜了.. ...

  4. Atitit 最近资料文章列表r9 r8 月份 attilax总结

    Atitit 最近资料文章列表r9  r8 月份   attilax总结 atitit tag标签标示规范 attilax总结 v2 r922.docx 2017-09-28 02:04 阅读(27) ...

  5. noip2018——题解&总结

    近期正在疯狂复习某些东西,这篇博客尽量年底更完……(Day2T2除外) 好了,所有的希望都破灭了,原来这就是出题人的素质.——一个被欺骗的可怜 $OIer$ 人生中倒数第三次 $noip$ (Mayb ...

  6. RenderBox使用说明书&原理浅析

    本文基于1.12.13+hotfix.8版本源码分析. 0.目录 一.RenderBox的用法 1.RenderBox的使用基本流程 2.RenderObjectWidget 3.非容器控件的hitT ...

  7. LeetCode刷题的一点个人建议和心得

    目录 1.    为什么我们要刷LeetCode? 2.    LeetCode的现状和问题 3.    本文的初衷 4.    LeetCode刷题建议 4.1入门数据结构,打基础阶段 4.2 建立 ...

  8. pat甲级考试+pat1051+1056

    同上一篇博客: 贪心题目我已经刷了将近30道了,由于那几天考驾照就没写,以后有空的时候补过来吧,都在codeblock里 pat的题也刷了点,acwing 的题也刷了点,基本都攒下了.以后也会慢慢补过 ...

  9. [知识点]Trie树和AC自动机

    // 此博文为迁移而来,写于2015年5月27日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w1s8.html 1.前 ...

随机推荐

  1. 【C语言】统计数组中出现次数超过一半的数字

    //统计数组中出现次数超过一半的数字 #include <stdio.h> int Find(int *arr, int len) { int num = 0; //当前数字 int ti ...

  2. [hdu 4869](14年多校I题)Turn the pokers 找规律+拓欧逆元

    Turn the pokers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. 自己定义定时器(Timer)

    近期做项目的时候,用到了java.util.Timer定时器类.也初步使用了,个人感觉不错.只是,在某些方面Timer类无法满足项目的需求.比方,在使用Timer时,调用schedule()方法之后( ...

  4. jquery通过数值改变球大小

    在业务中遇到一个问题:在页面上显示一个球.且球的大小会应数字的大小而改变. 我们都知道 js是能够画圆(用css样式准备一个圆.假设addClass),但这并非我们想要的. 于是笔者脑洞打开:用样式画 ...

  5. windows 下使用VMware Workstation Pro 工具,ubuntu创建虚拟机

    本文记录windows 下使用VMware Workstation Pro 工具,ubuntu创建虚拟机 的步骤 第一步 [文件] --- [新建虚拟机]   第二步 弹出的新建虚拟机向导对话框 标准 ...

  6. 翻译:MariaDB DATABASE()

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  7. HTML5 桌面通知:Notification API

    原文地址:http://blog.gdfengshuo.com/article/23/ 前言 Notification API 是 HTML5 新增的桌面通知 API,用于向用户显示通知信息.该通知是 ...

  8. Robotframework-Appium系列:登录操作

    之前Appium的环境已经配置完成(参考Robotframework-Appium系列:安装配置),接下来就是如何使用Appium来完成我们的apk的测试工作. 一.环境准备 所需的软件列表如下 Ro ...

  9. ArcGIS API for JavaScript 4.2学习笔记[15] 弹窗内容的格式与自定义格式

    先看结果截图吧(不看过程可以直接看总结,在文末): 随便点击了两个城市斑块,出现结果如图. 我来解读一下这结果和以前的有什么不同: 这个例子使用了PopupTemplate,数据是Layer(使用Po ...

  10. Ryz的鬼题

    蚂蚁(ant)[题目描述]  小 R 种了一棵苹果树,这棵树上有 n 个节点(标号从 0 到 n-1),有 n-1 条树枝连接这  n 个节点,这 n 个节点相互连通.每条树枝的长度为 1.  苹果树 ...