自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 Mysql面试题_表空间05

Mysql面试题_表空间05文章目录Mysql面试题_表空间051.Innodb_file_per_table 参数有什么作用?2.Mysql数据删除流程是怎样的?3.哪些情况会导致Mysql的数据空洞?4.重建表的执行步骤是什么?5.MySQL 5.6 版本开始引入的 Online DDL,重建表的流程是怎样的?6.重建表的三种方式是什么?有什么区别?7.inplace 跟 Online 的异同?8.什么时候使用 alter table t engine=InnoDB 会让一个表占用的空间反而变大?1

2021-06-22 23:28:08 284

原创 Mysql面试题_redo log04

Mysql面试题_redo log04文章目录Mysql面试题_redo log041.SQL语句为什么突然变“慢”了?2.Mysql脏页和干净页的定义是什么?3.引发数据库flush脏页的四种典型场景各是什么?对mysql性能的影响各是怎样的?4.缓存池中的内存页有哪三种状态? 哪两种刷脏页的情况会比较影响性能?5.InnoDB 刷脏页的控制策略是什么?6.innodb_flush_neighbor这个参数表示什么意思,应该如何设置?7.如果你在配置的时候不慎将 redo log 设置成了 1 个 10

2021-06-22 23:23:54 335

原创 Mysql面试题_索引03

Mysql面试题_索引03文章目录Mysql面试题_索引031.Mysql为什么有时候会选错索引?2.Mysql索引扫描行数是怎么判断的?3.Mysql索引选择异常的优化处理方案?4.Mysql 优化器存在选错索引的可能性,如何解决呢?1.Mysql为什么有时候会选错索引?这里需要注意优化器的逻辑:选择索引是优化器的工作。优化器选择索引的目的:是寻找一个最优的执行方案,并用最小的代价去执行语句。在数据库中,扫描行数是影响执行代价的因素之一。扫描的行数越少,意味着访问磁盘数据的次数越少,消耗的CPU资

2021-06-21 21:44:14 203

原创 Mysql面试题_索引02

Mysql面试题_索引02文章目录Mysql面试题_索引021.从性能的角度考虑,怎么选择唯一索引和普通索引,为什么?查询过程更新过程2.什么是change buffer?3.change buffer的使用场景?4.如何选择普通索引和唯一索引?5.如何理解redo log和change buffer?1.从性能的角度考虑,怎么选择唯一索引和普通索引,为什么?首先,唯一索引(UNIQUE)和普通索引(key)使用的数据结构都是b-tree;执行时间复杂度都是O(logn).查询过程对于查询过程来说

2021-06-19 13:53:52 169

原创 go_面试题: make()和new()的区别?

go_面试题: make()和new()的区别?文章目录go_面试题: make()和new()的区别?go 语言中make()和new()的区别?概述:源码查看Make()New()go 语言中make()和new()的区别?概述:make() 的作用是初始化内置的数据结构,也就是切片(slice)、哈希表(map)和 Channelnew() 的作用是根据传入的类型分配一片内存空间并返回指向这片内存空间的指针源码查看可以从源码定义上来看,make()返回的是类型本身;而new()返回的

2021-06-02 22:37:22 225

原创 解决:Mac brew Error: Your CLT does not support macOS 11.2

解决:Mac brew Error: Your CLT does not support macOS 11.2.文章目录解决:Mac brew Error: Your CLT does not support macOS 11.2.报错信息解决问题Referrence报错信息 MacBook-Pro $ brew install protobufWarning: You are using macOS 11.2.We do not provide support for this pre-rele

2021-04-28 23:17:48 2722

原创 Mac 下安装 配置protobuf

Mac 下安装 配置protobuf文章目录Mac 下安装 配置protobuf安装protobuf配置环境Referrence安装protobuf使用 home brew 安装protobufbrew install protobuf验证安装是否完成MacBook-Pro$ protoc --versionlibprotoc 3.15.8 # protobuf 版本信息安装go 的protobuf插件go get -u -v github.com/golang/protobuf/p

2021-04-28 23:14:58 613 1

原创 go_读书笔记_03

go_读书笔记_03文章目录go_读书笔记_03面向并发的内存模型Goroutine和系统线程原子操作面向并发的内存模型常见的并行编程有多种模型,主要有多线程、消费传递等。从理论上来看,多线程和基于消息传递等并发编程是等价的。Go语言是基于消息并发模型的集大成者,它将基于CSP模型的并发编程内置到了语言中,通过一个go关键字就可以轻易地启动一个goroutine,Go语言的goroutine之间是共享内存的。Goroutine和系统线程goroutine是go语言特有的并发体,是一种轻量级的

2021-04-24 22:42:06 151 1

原创 go_读书笔记_02

go_读书笔记_02文章目录go_读书笔记_02函数、方法和接口函数方法接口函数、方法和接口函数对应操作序列,是程序的基本组成元素。go语言中的函数有具名和匿名之分:具名函数一般对应于包级别的函数,是匿名函数的一种特例。当匿名函数引用了外部作用域中的变量时就成了闭包函数,闭包函数是函数式编程的核心。方法是绑定到一个具体类型的特殊函数,Go语言中的方法是依托于类型的,必须在编译时静态绑定。接口定义了方法的集合,这些方法依托于运行时的接口对象,因此接口对应的方法是在运行时动态绑定的。Go语言通过隐

2021-04-24 22:40:58 94

原创 Go_读书笔记_01

Go_读书笔记_01文章目录Go_读书笔记_01数组、字符串和切片数组字符串切片数组、字符串和切片go语言数组、切片和字符串三者的关系# 1. 在底层原始数据有着相同的内存结构;在上层,因为语法的限制而有着不同的行为表现。# 2. 数组:一种值类型;# 虽然数组的元素可以被修改,但数组本身的赋值和函数传参都是以整体复制的方式处理的。# 3. 字符串:# 底层数据也是对应的字节数组,但字符串的只读属性禁止了在程序中对底层字节数组元素的修改。#

2021-04-24 22:38:07 89

原创 记K8s Pod The node was low on resource: [DiskPressure]. 问题排查

记K8s Pod The node was low on resource: [DiskPressure]. 问题排查文章目录记K8s Pod The node was low on resource: [DiskPressure]. 问题排查报错Pod The node was low on resource: [DiskPressure]的原因真正的原因新的问题报错Pod The node was low on resource: [DiskPressure]的原因使用kubectl desc

2021-04-21 21:09:01 4390

原创 go Json序列化、JSON格式化

Go Json序列化、JSON格式化文章目录Go Json序列化、JSON格式化json.Marshal( 转成json字符串)json.MarshalIndent(转成可读性更好的json字符串)referrence需求: 使用go语言将struct转为json字符串,输出到文本中。要求:输出到文本的json字符串可阅读性好。json.Marshal( 转成json字符串)type User struct { Name string Age int8}func testMar

2021-04-14 22:36:23 1345 1

原创 Docker Images 导入/导出

Docker Images 导入/导出文章目录Docker Images 导入/导出Docker 镜像保存Docker镜像导入Docker 命令Docker 镜像保存使用docker save [option]可以是镜像名/镜像ID >(重定向) 保存镜像路径命令,废话不多说,直接看示例。[root@test locust_1.3.2]<20210412 17:47:43># docker images |grep mylocustmylocust

2021-04-12 21:02:37 536

原创 解决 Linux : time out waiting for input: auto-logout问题

解决 Linux : time out waiting for input: auto-logout问题问题:在ssh密钥连接情况下,一定时间不输入,则自动退出。timed out waiting for input: auto-logout超时等待输入:自动注销[root@One-IOT-028 ~]<20210412 18:15:10># timed out waiting for input: auto-logout[app@One-IOT-028 ~]<20210412

2021-04-12 20:59:33 5069 1

原创 漫画算法-学习笔记(31)

漫画算法-小灰的算法之旅(31)文章目录漫画算法-小灰的算法之旅(31)什么是A星寻路算法A星寻路的具体步骤代码实现什么是A星寻路算法A星寻路算法:(A * search algorithm),是一种用于寻找有效路径的算法。举一个简单的场景来解释一下A星寻路算法的工作过程。迷宫游戏的场景通常都是由小方格组成的。假设我们有一个7X5大小的迷宫,上图中绿色的格子是起点,红色的格子是终点,中间的3个蓝色格子是一堵墙。AI角色从起点开始,每一步只能向上/下/左/右移动1格,且不能穿越墙壁。那么如何让AI角色

2021-03-22 22:14:46 320

原创 Docker 开放RemoteAPI 2375端口访问

Docker 开放RemoteAPI 2375端口访问文章目录Docker 开放RemoteAPI 2375端口访问Docker常见端口修改配置文件重启Docker服务验证修改成功与否测试查看docker版本信息Docker常见端口2375 端口:未加密的docker socket; 远程登录root账号无密码访问主机(默认不开启)2376 端口:TLS加密套接字,很可能是 服务器的CI 4243端口作为https 443端口的修改2377 端口:集群模式套接字,适用于集群管理器,不适用于doc

2021-03-22 21:06:09 483 1

原创 漫画算法-学习笔记(30)

漫画算法-小灰的算法之旅(30)文章目录漫画算法-小灰的算法之旅(30)1. 什么是LRU算法?什么是LRU算法LRU算法描述示例演示时间复杂度代码实现golang实现1. 什么是LRU算法?什么是LRU算法LRU(Least Recently Used),也就是最近最少使用的意思,是一种内存管理算法,该算法最早应用于Linux操作系统。这个算法基于一种假设:长期不被使用的数据,在未来被用到的几率也不大。因此,当数据所占内存达到一定阀值时,我们可以移除掉最近最少被使用的数据,以此来给出足够的内存空间

2021-03-21 18:15:09 306

原创 漫画算法-学习笔记(29)

漫画算法-小灰的算法之旅(29)文章目录漫画算法-小灰的算法之旅(29)Bitmap的秘密BitMap 如何做到多维交叉运算的BitMap如何做到高速运算的BitMap代码实现golang实现关于BitMap算法一些处理大数据问题的场景:ReferenceBitmap的秘密BitMap 如何做到多维交叉运算的Bit即比特,是目前计算机系统里面数据的最小单位,8个bit即为一个Byte。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2.Bitmap可以理解为通过一个bit数

2021-03-20 22:31:46 421

原创 漫画算法-学习笔记(28)

漫画算法-小灰的算法之旅(28)文章目录漫画算法-小灰的算法之旅(28)寻找缺失的整数方法一(哈希表)思路时间复杂度代码实现方法二(先排序后查找)思路时间复杂度代码实现方法三(累加求差)思路时间复杂度代码实现方法一(异或运算)思路时间复杂度代码实现方法一(分治法+异或运算)思路寻找缺失的整数Q: 在一个无序数组里面有99个不重复的正整数,范围是1~100,唯独缺少1个1~100中的整数,如何找出这个缺失的整数?方法一(哈希表)思路创建一个哈希表,以1到100这100个整数位key,然后遍历整

2021-03-19 23:50:38 114

原创 漫画算法-学习笔记(27)

漫画算法-小灰的算法之旅(27)文章目录漫画算法-小灰的算法之旅(27)1. 如何求解金矿问题动态规划解答递归实现时间复杂度问题优化代码实现(二维数组表实现)时间复杂度Reference1. 如何求解金矿问题Q: 有一位国王拥有5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人人数也不同。例如:有的金矿储量是400kg黄金,需要5个工人来挖掘;有的金矿储量是500kg黄金,需要5个工人来挖掘;有的金矿储量是200kg黄金,需要2个工人来挖掘;有的金矿储量是300kg黄金,需要4个工人来挖掘

2021-03-18 22:29:33 333

原创 Docker 安装mysql并解决ERROR 1045 (28000)问题

Docker 安装mysql并解决ERROR 1045 (28000):问题文章目录Docker 安装mysql并解决ERROR 1045 (28000):问题安装步骤打包镜像启动容器查看端口映射注意事项Reference安装步骤我习惯用dockerfile做一些自定义的配置。FROM mysql:8.0.23ENV MYSQL_ROOT_PASSWORD my_root_passwordENV MYSQL_DATABASE testENV MYSQL_USER

2021-03-18 22:17:16 2196

原创 漫画算法-学习笔记(26)

漫画算法-小灰的算法之旅(26)文章目录漫画算法-小灰的算法之旅(26)1. 如何实现大整数相加方法(模拟竖式加加法)思路时间复杂度代码实现golang实现代码优化时间复杂度golang实现1. 如何实现大整数相加Q:给出两个很大的整数,要求实现程序求出两个整数之和。注:整数可能超过long类型范围方法(模拟竖式加加法)思路考虑到数字可能会超过基础数据类型,因此我们无法采用传统的计算方式来计算超大型数字。但我们学过「列竖时计算」,因此本题可以采用模拟【竖式加法】的计算过程,来实现问题求解。

2021-03-17 21:31:25 106

原创 Go 在Mac下如何交叉编译

Go 在Mac下如何交叉编译文章目录Go 在Mac下如何交叉编译Go在mac下编译Linux、Window64位的可以执行文件Mac下编译Linux可执行文件Mac下编译Windows 64可执行文件ReferenceGo在mac下编译Linux、Window64位的可以执行文件Go语言支持交叉编译,在一个平台上可以生成另一个平台的可执行文件。但是由于命令比较长,因此做一个记录备注一下。Mac下编译Linux可执行文件# cd 到 main.go 所在的文件夹路径$ CGO_ENABLED=0

2021-03-17 20:43:37 802

原创 漫画算法-学习笔记(25)

漫画算法-小灰的算法之旅(25)文章目录漫画算法-小灰的算法之旅(25)1. 删去k个数字后的最小值方法一(贪心算法)思路时间复杂度代码实现方法二(贪心算法+单调栈)思路时间复杂度代码实现golang实现1. 删去k个数字后的最小值Q: 给出一个整数,从该整数中去掉k个数字,要求剩下的数字形成的新整数尽可能小。其中整数的长度大于或等于k,给出的整数的大小可以超过long类型的数字范围。示例1:给定整数为1593212 ,删去3个数字,新整数最小的情况为1212给定整数为30200,删去1个数

2021-03-16 21:16:51 200

原创 漫画算法-学习笔记(24)

漫画算法-小灰的算法之旅(24)文章目录漫画算法-小灰的算法之旅(24)1. 寻找全排列的下一个数思路时间复杂度代码实现golang实现1. 寻找全排列的下一个数Q: 给出一个正整数,找出这个正整数所有数字全排列的下一个数。说通俗一点就是在一个整数所包含数字的全部组合中,找到一个大于且仅大于原数的新整数。例如:如果输入12345;则返回12354如果输入12354;则返回12435如果输入12435;则返回12453思路对于长度为n的排列a:首先从后向前查找第一个顺序对(i,i+1)

2021-03-15 22:18:54 313

原创 漫画算法-学习笔记(23)

漫画算法-小灰的算法之旅(23)文章目录漫画算法-小灰的算法之旅(23)1. 如何用栈实现队列思路时间复杂度代码实现golang实现总结1. 如何用栈实现队列Q: 用两个栈来模拟一个队列,要求实现队列的两个基本操作,入队和出队。思路栈的特点是先入后出(FILO),出入元素都是在同一端(栈顶)。队列的特点是先入先出(FIFO),出入元素是在不同的两端(队头和队尾)。由于我们可以使用两个栈,那么可以让其中一个栈作为队列的入口,负责插入新元素;另一个栈作为队列的出口,负责移除老元素。队列的主要

2021-03-14 16:47:08 96

原创 漫画算法-学习笔记(22)

漫画算法-小灰的算法之旅(22)文章目录漫画算法-小灰的算法之旅(22)1. 无序数组排序后的最大相邻差方法一(排序数组+遍历求解)思路时间复杂度代码实现方法二(计数排序思想)思路代码实现方法三(桶排序思想)思路时间复杂度代码实现1. 无序数组排序后的最大相邻差Q: 有一个无序整型数组,如何求出该数组排序后的任意两个相邻元素的最大差值?要求时间和空间复杂度尽可能低。可能题目有点绕,让我们看看下图的例子:方法一(排序数组+遍历求解)思路使用任意一种时间复炸度为O(nlogn)的排序算法(如快

2021-03-14 16:46:19 103

原创 漫画算法-学习笔记(21)

漫画算法-小灰的算法之旅(21)文章目录漫画算法-小灰的算法之旅(21)1. 如何判断一个数是否为2的整数次幂方法一(暴力枚举)思路:时间复杂度代码实现golang实现方法二(枚举&&移位)思路时间复杂度代码实现golang实现方法三(按位与运算)思路时间复杂度代码实现golang实现总结1. 如何判断一个数是否为2的整数次幂Q:实现一个方法,来判断一个正整数是否是2的整数次幂(如16是2的4次方,返回true;18不是2的整数次幂,则返回false).要求性能尽可能高。方法一(

2021-03-14 16:45:16 168

原创 漫画算法-学习笔记(20)

漫画算法-小灰的算法之旅(20)文章目录漫画算法-小灰的算法之旅(20)1. 如何求出最大公约数暴力枚举法思路时间复杂度代码实现golang实现辗转相除法思路时间复杂度代码实现golang实现更相减损法思路时间复杂度代码实现golang实现更相减损法+移位运算相结合思路时间复杂度代码实现golang实现1. 如何求出最大公约数Q: 写一段代码,求出两个整数的最大公约数,要尽量优化算法的性能暴力枚举法思路假设存在a,b两个整数,从较小整数的一半开始,试图找到一个合适的整数k,使得这个整数能被a

2021-03-12 22:37:12 241

原创 漫画算法-学习笔记(19)

漫画算法-小灰的算法之旅(19)文章目录漫画算法-小灰的算法之旅(19)1. 最小栈的实现方法一(辅助栈)思路:时间复杂度代码实现golang实现方法二(自定义栈)思路:时间复杂度代码实现1. 最小栈的实现Q: 实现一个栈,该栈带有出栈(pop)、入栈(push)、取最小元素(getMin)三个方法。要保证3个方法的时间复杂度都是O(1)。对于栈而言,如果一个元素a在入栈时,栈里面有其它的元素b,c,d;那么无论这个栈在之后经历了什么操作,只要a在栈中,b,c,d就一定在栈中(FILO),因为在

2021-03-11 20:52:32 134 2

原创 漫画算法-学习笔记(18)

漫画算法-小灰的算法之旅(18)文章目录漫画算法-小灰的算法之旅(18)1. 如何判断链表有环方法一方法二方法三(快慢指针追及)代码实现2. 如何求链表环的长度3. 如何求出环形俩表的入环点1. 如何判断链表有环Q: 有一个单向链表,链表中有可能出现"环",像下图一样。那么,如何用程序来判断该链表是否为有环链表呢?方法一首先从头节点开始,依次遍历单链表中的每一个节点。每遍历一个新节点,就从头检查新节点之前的所有节点,用新节点和此节点之前所有节点依次做比较。如果发现新节点和之前的某个节点相同,则

2021-03-10 23:43:14 203

原创 漫画算法-学习笔记(17)

漫画算法-小灰的算法之旅(17)文章目录漫画算法-小灰的算法之旅(17)1. 什么是桶排序实现步骤代码实现总结1. 什么是桶排序桶排序: 是一种线性时间的排序算法,类似于计数排序所创建的统计数组,桶排序需要创建若干个桶来协助排序。实现步骤什么是桶(bucket)?每一个**桶(bucket)**代表一个区间范围,里面可以承载一个或多个元素。假设有一个非整数数列如下: {4.5,0.84,3.25,2.18,0.5}让我们开看看桶排序的工作原理:第一步,就是创建这些桶,并确定每一个桶的区间范

2021-03-09 21:50:42 124

原创 漫画算法-学习笔记(16)

漫画算法-小灰的算法之旅(16)文章目录漫画算法-小灰的算法之旅(16)1. 什么是计数时间排序初识计数排序代码实现计数排序的优化代码实现时间复杂度2. 总结1. 什么是计数时间排序计数排序:利用数组下标来确定元素的正确位置的算法,时间复杂度为线性时间、初识计数排序假设数组中有20个随机整数,取值范围为(0~10),要求用最快的速度把这个20个整数从小到大进行排序。如何给这些无序的随机整数进行排序呢?考虑到这些整数只能在(0,1,2,3,4,5,6,7,8,9,10)这11个数中取值,取值范围

2021-03-08 23:17:40 243

原创 漫画算法-学习笔记(15)

漫画算法-小灰的算法之旅(15)文章目录漫画算法-小灰的算法之旅(15)1. 什么是堆排序2. 代码实现3. 总结堆排序和快速排序比较1. 什么是堆排序堆排序:利用二叉堆的构建、删除、自我调整等基本操作来实现快速排序。二叉堆的特性最大堆的堆顶是整个堆中的最大元素最小堆堆堆顶是整个堆中的最小元素以最大堆为例,如果删除一个最大堆的堆顶(并不是完全删除,而是跟末尾的节点交换位置),经过自我调整,第2大的元素就会被交换上来,成为最大堆的新堆顶。如上图所示,在删除值为10的堆顶点后,经过调整,值为

2021-03-07 20:03:34 117

原创 漫画算法-学习笔记(14)

漫画算法-小灰的算法之旅(14)文章目录漫画算法-小灰的算法之旅(14)1. 什么是快速排序基准元素的选择元素的交换双边循环法代码实现单边循环法代码实现非递归实现1. 什么是快速排序和冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序在每一轮中只把一个元素冒泡到数列的一端,而快速排序则在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成两个部分。这种思路就叫分治法。所谓分治法的思想:从

2021-03-07 20:00:30 283 3

原创 漫画算法-学习笔记(13)

漫画算法-小灰的算法之旅(13)文章目录漫画算法-小灰的算法之旅(13)1. 什么是冒泡排序冒泡排序代码实现冒泡排序的优化2. 鸡尾酒排序代码实现3. 总结鸡尾酒排序的优缺点是什么?1. 什么是冒泡排序什么是冒泡排序?冒泡排序(bubble sort):是一种基础的交换排序。冒泡排序的思想:把相邻的元素两两比较,当一个元素大于右侧相邻元素时,交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变。冒泡排序:是一种稳定排序,值相等的元素并不会打乱原本的顺序。由于改排序算法的每一轮都要遍历所有元

2021-03-06 23:14:49 168

原创 漫画算法-学习笔记(12)

漫画算法-小灰的算法之旅(12)文章目录漫画算法-小灰的算法之旅(12)1. 什么是优先队列什么是优先队列?2. 优先队列的实现入队操作出队操作时间复杂度3. 代码实现4. 总结什么是树?什么是二叉树?二叉树的遍历方式有几种什么是二叉堆什么是优先队列1. 什么是优先队列队列的特点是什么?队列的特点: 先进先出(FIFO),入队列,将新元素置于队尾;出队列,队头元素最先被移出。什么是优先队列?优先队列不再遵循先进先出的原则,而是分为两种情况。最大优先队列:无论入队顺序如何,都是当前最大的元素优

2021-03-05 23:11:19 112

原创 漫画算法-学习笔记(11)

漫画算法-小灰的算法之旅(11)文章目录漫画算法-小灰的算法之旅(11)1. 什么是二叉堆什么是最大堆?什么是最小堆?2. 二叉堆堆自我调整插入节点删除节点构建二叉堆时间复杂度3. 二叉堆的代码实现代码实现1. 什么是二叉堆二叉堆:本质上是一种完全二叉树,它分两个类型。最大堆最小堆什么是最大堆?最大堆:最大堆的任何一个父节点的值,都大于或等于它左、右孩子节点的值。什么是最小堆?最小堆:最小堆的任何一个父节点的值,都小于或等于它左、右孩子节点的值。二叉堆的根节点叫作堆顶。最大堆和最小堆

2021-03-03 23:41:14 161 1

原创 漫画算法-学习笔记(10)

漫画算法-小灰的算法之旅(10)文章目录漫画算法-小灰的算法之旅(10)二叉树的广度优先遍历二叉树的层序遍历代码实现时间复杂度二叉树的广度优先遍历如果说深度优先遍历是在一个方向上“一头扎到底”那么广度优先遍历则恰恰相反;先在各个方向上各走一步,再在各个方向上走出第二步、第三步…直到各个方向全部走完。二叉树的层序遍历层序遍历:就是二叉树按照从根节点到叶子节点的层次关系,一层一层横向遍历各个节点。思路:采用**队列(FIFO)**来作为辅助结构,先将根节点放入到队列中,然后不断遍历队列。首先拿出根节

2021-03-03 21:26:39 106 1

原创 漫画算法-学习笔记(09)

漫画算法-小灰的算法之旅(09)文章目录漫画算法-小灰的算法之旅(09)二叉树遍历-非递归方式如何借助栈来实现二叉树的非递归遍历呢?前序遍历中序遍历后序遍历二叉树遍历-非递归方式二叉树的深度优先遍历还可以采用非递归的方式来实现,不过要稍微复杂一点。绝大多数可以用递归解决的问题,其实都可以采用另一种数据结构来解决—栈。因为递归和栈都具备回溯的特性。如何借助栈来实现二叉树的非递归遍历呢?前序遍历思路:在迭代算法中,思路演变成,每到一个节点A,就应该立即访问它。因为每棵树都是先访问其根节点。对节点的

2021-03-02 23:31:53 112

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除