
DS
卑微楽
繁华落幕, 心系远方
展开
-
[数据结构]二叉树基本操作(遍历,查找,节点个数)
二叉树 : 二叉树基本概念 : 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。 二叉树的特点: 1. 每个结点最多有两棵子树,即二叉树不存在度大于2的结点。 2. 二叉树的子树有左右之分,其子树的次序不能颠倒。 相信二叉树对于我们来说并不陌生,今天我们看一些二叉树的...原创 2019-04-10 23:43:58 · 1519 阅读 · 0 评论 -
【c++】AVL树 --- 基本操作
AVL树一 . 概念 二叉搜索树可以缩短查找的效率,但是如果数据有序或者接近有序的时候可能会退化为单支树,再查找的话相当于再一个顺序表中的查找, 这个时候效率就会很低, 达不到预期的效果, 比如: 基于上面情况, 所以有了AVL树,即向二叉搜索树中插入结点的时候进行调整,使得每个结点的左右子树的高度差不超过一,这样就可以降低树的高度, 从而提高查找的效率, 比如 :...原创 2019-08-18 01:08:49 · 293 阅读 · 0 评论 -
【c++】红黑树
红黑树一. 概念 红黑树本质上也是一种二叉搜索树, 只不过在每个节点上增加了一个存储位表示当前节点的颜色, 可以是RED或者BLACK, 通过对每个节点颜色的限制, 使得红黑树是一棵接近平衡的树. 例如 :二. 性质每个节点的颜色只有黑色和红色两种 根节点一定是黑色的 红色节点不能相连, 即如果一个节点是红色, 它的左右孩子一定是黑色 对于任何...原创 2020-07-31 17:49:54 · 221 阅读 · 0 评论 -
【c++】二叉搜索树---基本操作
二叉搜索树 前面我们写过二叉树, 两种树基本是相同的结构, 但是二叉搜索树又有固定的一些条件, 下来我们一起看.一.定义 :二叉搜索树又称二叉排序树, 它有两种可能1. 空树2. 非空树, 满足 : a.若左子树不为空, 则左子树上所有的点都小与根节点 b. 若右子树不为空, 则右子树上所有的点都大于根节点 c. 它的左右子树也分别为二...原创 2019-08-16 17:46:00 · 177 阅读 · 0 评论 -
【数据结构】无头单向非循环链表
链表首先我们来思考一个问题:为什么要有链表这种结构呢? 上次我们写了顺序表, 其实本质上也就是一个数组, 它已经可以完成数据的存储和访问了, 但是它还存在一些不可避免的问题 1. 顺序表的中间和头部的插入删除的时间复杂度都是O(n), 复杂度太高 2. 增容的时候需要申请新的空间, 还要完成数据从旧空间到新空间的数据拷贝过程, 再释放旧空间, 消耗非常大 3. ...原创 2019-09-28 23:22:12 · 169 阅读 · 0 评论 -
【数据结构】带头双向循环链表的实现
带头双向循环链表 上一篇我们写了无头单向非循环链表,我们了解了,链表有8中结构,但是最常见的就是这两种,在很多笔试题中都是单向链表,但是在实际工作中用双向链表又更多一点,因为双向链表比单链表效率更高,双链表结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了 其实写了单链表之后再看双链表其实非常简单,只不过就是多了一个指针域而已,再...原创 2019-10-02 23:05:26 · 160 阅读 · 0 评论 -
【数据结构】顺序表和单链表的区别
我们前两篇已经自助实现了顺序表和链表,那么我们现在来看一下它们的区别 顺序表 单链表 随机访问 支持 ...原创 2019-10-02 23:37:06 · 356 阅读 · 0 评论 -
【数据结构】顺序栈的实现
概念 栈实际上是一种特殊的线性表, 只是对插入删除进行了限制, 只能在一端进行插入删除, 插入删除的一端叫栈顶,另一端叫栈底 栈中的元素遵循先进后出的原则 压栈 :栈的插入操作,也叫入栈,入数据在栈顶 出栈 : 栈的删除操作叫做出栈, 出数据也在栈顶实现 栈的实现一般可以使用顺序表或者链表实现, 相对而言顺序表的结构实现更优一些, 因为顺序表尾...原创 2019-10-07 13:53:56 · 178 阅读 · 0 评论 -
【数据结构】队列的实现
队列概念 队列也是一种特殊的线性表, 只允许在一端进行擦汗如操作, 另一端进行删除操作, 元素具有先进先出的特点, 插入操作的一端叫做队尾, 删除的一段叫做队头.实现 队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据效率会比较低。使用链表的话我们使用尾插和头删, 时间复杂度都是O(1), 效率更高一点....原创 2019-10-07 18:13:30 · 333 阅读 · 0 评论