
数据结构与算法(C/C++)
文章平均质量分 74
常用常考的数据结构与算法
一枚快乐的野指针
这个作者很懒,什么都没留下…
展开
-
二叉搜索树中的结点删除(看过就一定会理解)
二叉搜索树的结点删除题目题目分析代码实现题目https://leetcode-cn.com/problems/delete-node-in-a-bst/二叉搜索树中的结点删除实际考虑的情况非常多,下面我们来分析一波题目分析代码实现/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *原创 2021-05-10 11:55:04 · 254 阅读 · 2 评论 -
深度解析树(二叉树和n叉树)的前中后序和层序的遍历方法:递归法和迭代法
把递归和迭代遍历树学个通透1 二叉树基础扫盲1.1 二叉树的种类1.2 二叉树的存储方式1.2 二叉树的 C++ 定义2 两种遍历方式3 递归的方法论4 二叉树和N叉树的前中后序的递归遍历5 二叉树和N叉树的前中后序的迭代遍历5.1 二叉树前序遍历5.2 二叉树中序遍历5.3 二叉树后序遍历5.4 N叉树前序遍历5.4 N叉树后序遍历6 二叉树和N叉树的层序遍历1 二叉树基础扫盲说道二叉树,大家对于二叉树其实都很熟悉了,本文呢我也不想教科书式的把二叉树的基础内容在啰嗦一遍,所以一下我讲的都是一些比较重原创 2021-03-13 17:28:06 · 769 阅读 · 0 评论 -
栈和队列的互相实现
栈和队列1 栈和队列3 用栈实现队列3.1 思路分析3.2 代码实现4 用队列实现栈4.1 思路分析4.2 代码实现1 栈和队列栈: 后进先出的数据结构队列:先进先出的数据结构如图所示:那么以C++为例,自己使用的编程语言里栈和队列是什么样的呢。可以思考以下几个方面:C++中的 stack 是容器吗?我们使用的stack是属于哪个版本的 STL ?我们使用STL中的 stack 是怎么实现的呢?stack 提供迭代器来遍历 stack 空间吗?C++标准库是有多个版本的,原创 2021-02-18 17:24:46 · 339 阅读 · 2 评论 -
力扣——只出现一次的数字ⅠⅡⅢ(C++)
只出现一次的数字1 题目描述2 题目分析和实现2.1 题目12.1.1 分析2.1.2 实现2.2 题目22.2.1 分析2.2.2 实现2.3 题目31 题目描述题目链接如下:https://leetcode-cn.com/problems/single-number/https://leetcode-cn.com/problems/single-number-ii/https://leetcode-cn.com/problems/single-number-iii/2 题目分析和实原创 2021-02-11 10:15:58 · 374 阅读 · 0 评论 -
剑指offer 56——数组中数字出现的次数(C语言)
数组中数字出现的次数题目描述题目分析题目实现题目描述题目分析其实我们就可以看出来,xorRet 二进制序列中的1的位置对应两个出现一次的数字的二进制序列的位置有着规律————>xorRet 为1的位置,出现一次的数字x1,x2的位置必然一个是0一个是1。那么问题的解决方法就有了1、把数组中所有数异或为xorRet2、取xorRet中的1的位置。3、根据这个位置对数组中所有元素进行分组,那两个只出现一次的不同数字必然被分到了不同的组中,其他相同的数字也被分到了一组中。4、对两组原创 2021-01-30 22:01:16 · 1337 阅读 · 1 评论 -
排序算法
排序算法1 什么是排序以及排序算法的分类1.1 排序的概念1.1 排序的分类2 都有哪些排序算法2.1 插入排序2.1.1 直接插入排序2.1.2 希尔排序2.2 选择排序2.2.1 直接选择排序2.2.2 堆排序2.3 交换排序2.3.1 冒泡排序2.3.2 快速排序2.4 归并排序2.5 计数排序3 排序算法的性能评价和小结3.1 都有哪些性能评价指标3.2 总结1 什么是排序以及排序算法的分类1.1 排序的概念所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作原创 2021-01-28 19:14:46 · 2549 阅读 · 9 评论 -
二叉树链式存储实现及其遍历
二叉树的链式存储1 二叉树的链式存储1.1 链式存储实现方式1.2 二叉树结点2 二叉树的遍历2.1 深度优先遍历2.1.1 前序遍历2.1.2 中序遍历2.1.3 后序遍历2.2 广度优先遍历3 二叉树的最大深度&k层结点个数&叶子结点个数&3.1 二叉树的深度3.2 二叉树结点个数3.3 二叉树叶子结点个数3.4 二叉树第K层结点个数1 二叉树的链式存储1.1 链式存储实现方式二叉树的链式存储结构是指:用链表来表示元素间的逻辑关系。通常的方法是链表中每个结点由三个域组成,原创 2021-01-22 21:16:07 · 1601 阅读 · 0 评论 -
数据结构学习_05_二叉树_堆
堆1 树1.1 树的相关名词2 二叉树2.1 二叉树的概念2.2 二叉树的性质2.3 特殊的二叉树3 堆3.1 堆的概念3.2 堆的实现3.2.1 向下调整算法3.2.2 堆的构建3.2.3 堆排序1 树树是一种非线性数据结构,它是由n个有限结点组成的具有层次关系的集合。把它叫树是因为它是根朝上,叶子朝下的来上图瞧瞧1.1 树的相关名词2 二叉树2.1 二叉树的概念一颗二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树。如图所示:二叉树有以下原创 2021-01-11 22:28:06 · 375 阅读 · 0 评论 -
数据结构学习_04_线性表中的顺序表和链表的区别及优缺点
什么是顺序表?顺序表是在计算机内存中以数组的形式保存的线性表。顺序表存储是将数据元素放到一块连续的内存存储空间,相邻数据元素的存放地址也相邻,逻辑与物理的统一。什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每个元素称为结点)组成,结点可以在运行时动态生成。结点:每个结点包含两个部分:一个是存储数据元素的数据域,另一个是下一个结点地址的指针域。优缺点比较:1、时间上1)访问随机元素的时间复杂度因为顺序表原创 2021-01-05 15:08:59 · 794 阅读 · 0 评论 -
数据结构学习_03_线性表
数据结构中常用的线性表1 线性表的概念2 线性表的分类3 各种线性表的概念和实现3.1 顺序表3.1.2 概念3.1.2 实现3.2 链表3.1.2 概念3.1.2 实现3.3 栈3.1.2 概念3.1.2 实现3.4 队列3.1.2 概念3.1.2 实现1 线性表的概念线性表(Linear list)是n个具有相同特性的数据元素的有限序列,逻辑形式是线性,实际使用比较广泛。2 线性表的分类常见的线性表有:顺序表、链表、栈、队列、字符串等。3 各种线性表的概念和实现3.1 顺序表3.1.2 概原创 2021-01-05 13:43:02 · 383 阅读 · 0 评论 -
数据结构学习_02_复制带随机指针的链表
题目描述:给定一个链表,每个节点包含一个额外增加的随机指针,这个指针可以指向链表中的任意节点包括自身和NULL。要求返回这个链表的深拷贝分析:复制完原来的链表是可以完成每个节点的next是可以指向下一个节点这个要求的,但是复制只是把值进行了拷贝,每个节点里面的random就找不到原来链表在拷链表中的对应位置,这就达不到深拷贝要求,这才是这个问题的要解决的问题,那么怎么办呢?其实我们可以这样:第一步:第二步:第三步:那么最后的功能得以实现完整代码如下:/** * Definit原创 2021-01-04 22:04:52 · 181 阅读 · 0 评论 -
数据结构学习_01_单链表_相交链表_链表的环
链表1 链表的概念和定义2 相交链表3 带环的链表3.1 如何判断链表是否带环3.2 求链表入环的第一个节点1 链表的概念和定义链表(Linked List)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。如下图:由于不必须按顺序存储,链表在插入的时候可以达到 O(1)的复杂度,比另一种线性表 —— 顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要 O(n) 的时间,而顺序表相应的时间复杂度分别是 O(l原创 2020-12-26 22:17:31 · 283 阅读 · 2 评论