写在前面:

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

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. android UI布局

    一.设置反复背景 在drawable目录下建一个mybackground.xml文件 在文件里写入: <?xml version="1.0" encoding="u ...

  2. 阿里云部署Docker(4)----容器的使用

    通过上一节的学习,我们知道怎样执行docker容器,我们执行了一个普通的,一个后台的,我们还学习了几个指令: docker ps - Lists containers. docker logs - S ...

  3. UI - Cocoa Touch框架

    Cocoa Touch 层 Cocoa Touch层包括创建 iOS应用程序所需的关键框架. 上至实现应用程序可视界面,下至与高级系统服务交互.都须要该层技术提供底层基础.在开发应用程序的时候.请尽可 ...

  4. or1200处理器的异常处理类指令介绍

    下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 我们在计算机体系结构的学习中知道:中断实质上包含由外部事件引起的硬中断(又称外中断)和由内部预先安排的特定指令或内部异常引起的软中断 ...

  5. Spring基础知识之依赖注入

    Spring框架的四大原则: 1)使用POJO进行轻量级和最小侵入式的开发. 2)通过依赖注入和基于接口编程实现松耦合. 3)通过AOP和默认习惯进行声明式编程. 4)使用AOP和模板(templat ...

  6. inline-block并列排序时候的影响

    当两个设置了inline-block属性的元素并列排放时,它们的位置能够互相影响. 元素结构: <div class="container"> <div clas ...

  7. 转:java泛型

    1.为什么需要泛型 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52230032 泛型在Java中有很重要的地位,网上很多文章罗列各 ...

  8. IntelliJ Idea设置护眼浅绿色背景方法

    老版本的设置位置 新版本的设置位置不一样(下图新版本为2017.5.4)的设置位置

  9. 《TCP-IP详解卷2:实现》【PDF】下载

    <TCP-IP详解卷2:实现>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062539 内容简介 <TCP/IP详解·卷2 ...

  10. Lucene实现索引和查询

    0引言 随着万维网的发展和大数据时代的到来,每天都有大量的数字化信息在生产.存储.传递和转化,如何从大量的信息中以一定的方式找到满足自己需求的信息,使之有序化并加以利用成为一大难题.全文检索技术是现如 ...