甜胖妮

你是一只粉色小蛋糕

二叉树进阶和树的应用

二叉树的进阶内容,包含二叉查找树、平衡二叉树、红黑树等知识;以及树的应用,例如哈夫曼树。

二叉树的进阶二叉查找树(Binary Search Tree, BST)二叉查找树,也称二叉排序树。其特性是: 若左子树非空,则左子树上所有结点的值均小于根结点的值。 若右子树非空,则右子树上所有结点的值均大于根结点的值。 左右子树也分别是二叉查找树。 二叉查找树的基本操作的时间复杂度和树的高度成正比,即对于一棵$n$个结点的完全二叉树,操作的最坏运行时间是$O(\log_2 n)$。 ......

二叉树的应用——堆。

堆(Heap)堆是一种特殊类型的二叉树,堆具备两个性质: 每个结点的值大于(或小于)等于其每个子结点的值; 该二叉树是平衡二叉树。 如果根结点包含了最大的元素,则是大顶堆(max heap);反之,是小顶堆(min heap)。 堆结构的最大好处是元素查找、插入和删除效率高($O(\log_2 n)$)。 堆按层的顺序存储在一个一维数组里$heap[SIZE]$。 如何根据结点序号求父结......

C++学习路线

对C++学习思路和整体框架的个人思考。

C++学习思路每学习一门语言都有一门语言的学习路线。我认为C++的学习路线是:C++基础,C++高级编程(面向对象)以及 C++标准库(STL源码剖析)。前两个阶段采用《C++ primer》和《Effective C++》这两本书,配合黑马程序员视频和侯捷的视频。 ...

C++基础

C++基础知识。

C++基础...

图的基本概念和图的存储

图的概念和图的存储内容,整合了数据结构和算法设计与分析两门课的内容。

图图$G$由顶点(数据元素)集$V$和边集(顶点之间的关系)$E$组成,即为$G=(V,E)$。若$V={v_1,v_2,…,v_n}$,则用$|V|$表示图中的顶点个数,$E={(u,v)|u \in V,v \in V}$。顶点集$V$必须是非空集合。 基本术语 有向图:$(u,v)$和$(v,u)$被视作同一条边,其中$u \in V, v \in V$。 无向图:$(u,v)$和$(......

树的基础

树的基础知识。

树树一种递归的数据结构,是$n(n \geq 0)$个结点的有限集。 任意一棵非空树应满足: 有且仅有一个根结点。 当$n>1$时,其余结点可以分为$m(m>0)$个互不相交的有限集$T_1,T_2,…T_m$,其中每个集合本身又是一棵树并称为根结点的子树。 树的特点: 根结点没有前驱,其余结点有且只有一个前驱。 所有结点都可以有零个或多个后继。 基本术语 结点的度:一个......

字符串(串)

字符串的相关概念和模式匹配算法。

字符串(串)串(string)是由零个和多个字符组成的有限序列,一般记为: S='a_1a_2...a_n'(n \geq 0)前缀:字符串的前缀指除了最后一个字符之外的所有头部子串(是一个集合)。例如,字符串’abcde’的前缀是{a, ab, abc, abcd},字符串’a’的前缀是{}。\后缀:字符串的后缀指除了第一个地租之外的所有尾部子串。例如,字符串’abcde’的后缀是{e,......

数据结构和算法预备知识

数据结构和算法设计与分析的先导片(包含个人的一些学习和整合知识的思路和理解)。

数据结构和算法预备知识数据结构我们该如何理解数据结构?从哪几个角度串起来数据结构的所有知识。首先数据结构是数据元素+数据元素之间的关系。数据结构可以从三个层面理解,分别是——逻辑结构、存储结构和针对数据的操作。 数据的逻辑结构逻辑结构,我理解为数据元素之间的逻辑关系, 数据的存储结构存储结构是指数据结构在计算机中的表示,即数据结构如何在计算机内容中存储。直白一点可以理解为如何在计算机物理内存......

线性表、栈、队列和数组

数据结构中除了串、树和图之外的知识。

线性表、栈、队列和数组写在前面:其实这些内容应该写成几篇文章,但由于是秋招复习,我就把这些比较基础的数据结构放到一篇文章里,还有利于我们进行对比记忆!那么我们就开始吧! 首先,线性表、栈、队列和数组都属于数据的逻辑结构范畴,但是逻辑结构在计算机中的存储和本身逻辑结构无关。一种逻辑结构可以有多种存储结构的实现方法。比如逻辑结构线性表的存储结构有——顺序存储和链式存储。 其次,这四种逻辑结构的内......

数学预备知识

...