KandQ:那年,那树,那些知识点

写在前面:

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

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

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

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

  3. 二叉树的非递归遍历:该博文介绍了二叉树的非递归方式进行遍历的相关知识点,并给出相关代码

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

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

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

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

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

  9. 跳表:跳表(SkipList)是一种随机化的数据结构,跳表虽然不是树,但是其性能和红黑树以及AVL树不相上下,且其实现原理简单。为此,将其和树的相关知识点放在一起,是为了更加深刻的理解和掌握相应的数据结构。

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

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

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

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

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

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

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

posted @ 2018-01-11 20:20  林学徒  阅读(643)  评论(0编辑  收藏  举报