数据结构与算法
文章平均质量分 82
记录学习数据结构与算法
牧濑红莉栖cc
不仅要发现问题,还要解决问题!
展开
-
二叉树Ⅲ · 层序遍历 · 判断完全二叉树 · 公共祖先 · 搜索二叉树与双向链表 · 先序构造二叉树 · 先序 / 后序与中序构造二叉树 · 二叉树前中后序非递归遍历实现
二叉树Ⅲ · 层序遍历 · 判断完全二叉树 · 公共祖先 · 搜索二叉树与双向链表 · 先序构造二叉树 · 先序 / 后序与中序构造二叉树 · 二叉树前中后序非递归遍历实现。经过之前两篇 👉👉的学习,我们终于进入二叉树Ⅲ · 进阶内容了!冲冲冲~原创 2022-11-18 11:55:01 · 139 阅读 · 0 评论 -
二叉树Ⅱ · 二叉树的基本操作 · 二叉树的前序遍历/中序遍历/后序遍历 · 节点个数 · 叶子节点个数 · 二叉树高度 · 查询二叉树中val值的位置 · 平衡二叉树 · 对称二叉树
二叉树Ⅱ · 二叉树的基本操作 · 二叉树的前序遍历/中序遍历/后序遍历 · 节点个数 · 叶子节点个数 · 二叉树高度 · 查询二叉树中val值的位置 · 平衡二叉树 · 对称二叉树。每次遍历都是通过return里面的+1,对子树高度相加。遍历二叉树的时候,如果没有进行某种约定,每个人都按照自己的方式遍历,得出的结果就比较混乱,在遍历二叉树结点的时候,顺便判断二叉树是否平衡,就不需要全部结点都遍历。遍历是二叉树上最重要的操作之一,是二叉树上进行其它运算的基础。原创 2022-10-26 20:40:48 · 218 阅读 · 0 评论 -
二叉树Ⅰ · 树型结构 · 二叉树 · 满二叉树 · 完全二叉树 · 二叉树的性质 · 二叉树的存储
树型结构 · 二叉树 · 满二叉树 · 完全二叉树 · 二叉树的性质 · 二叉树的存储。上图给出了几种特殊的二叉树形态,从左往右依次是:空树、只有根节点的二叉树、节点只有左子树、节点只有右子树、节点的左右子树均在。若一个节点含有子节点,则这个节点称为其子节点的父节点;一个节点含有的子树的根节点称为该节点的子节点;以某节点为根的子树中任一节点都称为该节点的子孙。一个节点含有的子树的个数称为该节点的度;具有相同父节点的节点互称为兄弟节点;一棵树中,没有双亲节点的节点;原创 2022-10-26 19:43:08 · 777 阅读 · 0 评论 -
栈(Stack) · 队列(Queue) · 循环队列 · 双端队列
栈(Stack) · 队列(Queue) · 循环队列 · 双端队列。双端队列是指允许两端都可以进行入队和出队操作的队列,deque 是 “double ended queue” 的简称。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有。因为要和空的循环队列区分,所以满的循环队列要浪费一个空间,来表示这是满的循环队列。相对来说,顺序表的实现上要更为简单一些,所以我们优先使用顺序表实现栈。队列也可以数组和链表的结构实现,使用链表的结构实现更优一些。原创 2022-09-29 20:48:55 · 521 阅读 · 0 评论 -
Java · List的使用 · List的常用方法 · ArrayList顺序表 · LinkedList链表 · 打牌小程序 · 杨辉三角List实现
Java · List的使用 · List的常用方法 · ArrayList顺序表 · LinkedList链表 · 打牌小程序 · 杨辉三角List实现。使用 subList 方法截取的部分 list,如果去修改,会影响到原来的数据和截取的数据。LinkedList 底层代码其实是一个双向链表。如果这 10 容量使用满,那么它就会扩容,方式是。的时候,源码底层最终会找到 grow 扩容函数,这个时候,ArrayList 的。因为 subList 方法只是。原创 2022-09-29 16:30:43 · 377 阅读 · 0 评论 -
Java 集合与数据结构 · 接口 interfaces ·Collection 常用方法 · Map 常用方法
Java 集合与数据结构 · 接口 interfaces ·Collection 常用方法 · Map 常用方法。Java 集合框架 Java Collection Framework,又被称为容器 container,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes原创 2022-09-26 22:08:58 · 446 阅读 · 0 评论 -
Java · 链表相关练习题 · 高频面试题 · 有难度啊
链表相关练习题 · 高频面试题编写代码,以给定值 x 为基准将链表分割成两部分,所有小于 x 的结点排在大于或等于 x 的结点之前。在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。给定一个带有头结点 head 的非空单链表,返回链表的中间结点。新链表是通过拼接给定的两个链表的所有节点组成的。代码返回的是整个新链表,而不是内存图的新结点。将两个有序链表合并为一个新的有序链表并返回。原创 2022-09-25 21:54:04 · 343 阅读 · 0 评论 -
JavaSE · 链表概念以及结构 · 单链表接口实现 · 双向链表接口实现 · 代码图解 · 顺序表和链表的区别和联系
Java · 链表概念以及结构 · 单链表接口实现 · 双向链表接口实现 · 代码图解 · 顺序表和链表的区别和联系缺点:任意位置插入删除数据,时间复杂度为O(1);没有增容问题,插入一个开辟一个空间。缺点:中间或者前面的数据,需要插入或者删除操作的时候,优势:以节点为单位存储,不支持随机访问。优势:空间连续,支持随机访问。原创 2022-09-19 00:38:28 · 290 阅读 · 0 评论 -
JavaSE · 线性表 · 顺序表 · 顺序表的问题 · 顺序表接口实现(新增元素,删除元素,修改元素,查找元素,清空顺序表)
线性表在逻辑上是线性结构,是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…的存储单元,依次存储数据元素的线性结构,一般情况下采用数组存储。静态顺序表的定长数组导致 N 定大了,浪费空间;相比之下动态顺序表更加灵活,根据需要动态的分配空间大小.我们来实现一个动态顺序表,以下是需要支持的接口.静态顺序表适合确定知道需要存储多少数据的场景.在数组上完成数据的增删改查。线性表是 n 个具有。原创 2022-09-17 21:21:35 · 337 阅读 · 0 评论 -
算法效率 · 时间复杂度 · 空间复杂度
一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才知道。在计算机发展的早期,计算机的存储容量很小,所以对空间复杂度很是在乎。时间效率称为时间复杂度,而空间效率被称为空间复杂度。时间复杂度主要衡量的是一个算法的运算速度,而空间复杂度主要衡量一个算法所需要的额外空间。时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。实际中我们计算时间复杂度的时候,我们其实并不一定要计算到很精确的执行次数,而是。,简洁明了的表示出了执行次数。原创 2022-09-16 16:50:37 · 1263 阅读 · 0 评论