自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 4-字典树-数组中两个数的最大异或值

最大运算结果是 5 XOR 25 = 28.这是字典树的第4篇算法,的最大运算结果,其中。

2024-03-05 10:18:08 393

原创 3-字典树-单词搜索 II

内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。单词必须按照字母顺序,通过。和一个单词(字符串)列表。这是字典树的第3篇算法,返回所有二维网格上的单词。

2024-03-05 10:12:16 422

原创 2-字典树-添加与搜索单词 - 数据结构设计

请你设计一个数据结构,支持 添加新单词 和 查找字符串是否与任何先前添加的字符串匹配。和上一篇算法其实没什么比较大的区别。这是字典树的第二篇算法,

2024-03-04 10:38:43 383

原创 1-字典树-实现 Trie (前缀树)

是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。// 返回 False。// 返回 True。// 返回 True。// 返回 True。这道题比较简单,其实就是多维数组的灵活运用。(发音类似 "try")或者说。这是字典树的第一篇算法,

2024-03-04 10:32:59 446

原创 33-树-奇偶树

由于 0 层和 2 层上的节点值都是奇数且严格递增,而 1 层和 3 层上的节点值都是偶数且严格递减,因此这是一棵奇偶树。如果一棵二叉树满足下述几个条件,则可以称为。给你二叉树的根节点,如果二叉树为。3 层:[12,8,6,2]这是树的第33篇算法,2 层:[3,7,9]1 层:[10,4]

2024-03-01 10:50:49 364

原创 32-树-在每个树行中找最大值

请找出该二叉树中每一层的最大值。给定一棵二叉树的根节点。这是树的第32篇算法,

2024-03-01 10:03:45 348

原创 31-树-找树左下角的值

拿到这道题的第一想法,我可以层级遍历选取最左节点。假设二叉树中至少有一个节点。这是树的第31篇算法,

2024-02-29 16:36:37 358

原创 30-树-二叉搜索树中的众数

思路可以试试先前序遍历将数字计数,然后遍历map取出来放入到result里面。当然,也可以中序遍历获取有序数组,然后处理数字的方式找众数。给你一个含重复值的二叉搜索树(BST)的根节点。,找出并返回 BST 中的所有。如果树中有不止一个众数,可以按。(即,出现频率最高的元素)。这是树的第30篇算法,

2024-02-29 16:27:09 357

原创 BASE基本可用

本篇文章以数据库研发的视角开始,角度可能些许刁钻或者偏激,还请指正。

2024-02-28 18:23:58 862

原创 29-树-删除二叉搜索树中的节点

对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。另一个正确答案是 [5,2,6,null,4,null,7]。给定一个二叉搜索树的根节点。这是树的第29篇算法,,删除二叉搜索树中的。

2024-02-28 10:42:54 302

原创 28-树-N 叉树的层序遍历

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。给定一个 N 叉树,返回其节点值的。(即从左到右,逐层遍历)。这是树的第28篇算法,

2024-02-28 10:34:32 361

原创 27-树-左叶子之和

在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。,返回所有左叶子之和。这是树的第27篇算法,

2024-02-27 10:49:53 349

原创 26-树-二叉搜索树中第K小的元素

注意到这里时要进行排序的,我们不如直接用中序遍历,这样返回的就是有序数组。,请你设计一个算法查找其中第。个最小元素(从 1 开始计数)。给定一个二叉搜索树的根节点。这是树的第26篇算法,

2024-02-27 10:40:27 333

原创 25-树-翻转二叉树

层级遍历肯定可以解决这个问题,在遍历到每一个节点的时候左右旋转。,翻转这棵二叉树,并返回其根节点。标准的递归也能解决这个问题。给你一棵二叉树的根节点。这是树的第25篇算法,

2024-02-26 10:29:37 301

原创 24-树-完全二叉树的节点个数

的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。还有利用完美二叉树的做法,先判断是否是满节点,如果满的话直接计算,不满的话递归去做。,求出该树的节点个数。这是树的第24篇算法,

2024-02-26 10:15:06 374

原创 23-树-二叉搜索树迭代器

/ 返回 True。// 返回 True。// 返回 True。注意,指针初始化为一个不存在于 BST 中的数字,所以对。时,BST 的中序遍历中至少存在一个下一个数字。

2024-02-23 11:29:15 363

原创 22-树-二叉树的后序遍历

这是树的第22篇算法,。给你一棵二叉树的根节点root,返回其节点值的。[3,2,1]

2024-02-23 11:20:29 365

原创 21-树-二叉树的前序遍历

这是树的第11篇算法,。给你二叉树的根节点root,返回它节点值的遍历。[1,2,3]做了这么久的树问题,现在开始回忆三种遍历方法,这篇文章回忆的是前序遍历。

2024-02-22 16:51:59 374

原创 20-树-求根节点到叶节点数字之和

首先广度/层级遍历肯定能解决这个问题,我们随着遍历的过程带着路径信息,当到达子叶时进行累加操作。自然,深度优先遍历(前序遍历)也能解决这个问题。从根到叶子节点路径 1->2 代表数字 12。从根到叶子节点路径 1->3 代表数字 13。因此,数字总和 = 12 + 13 = 25。,树中每个节点都存放有一个。计算从根节点到叶节点生成的。给你一个二叉树的根节点。是指没有子节点的节点。这是树的第20篇算法,

2024-02-22 11:27:58 323

原创 19-树-填充每个节点的下一个右侧节点指针 II

给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),'#' 表示每层的末尾。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为。这道题和之前最本质的区别是这棵树不一定是完美二叉树,意味着有几个子叶可能缺失,但是广度/层级遍历不会受到影响。另一个做法之前是保持最左节点在这里可能行不太通了,我们只能一个根节点一个根节点的处理。

2024-02-20 10:50:56 347

原创 18-树-填充每个节点的下一个右侧节点指针

给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化的输出按层序遍历排列,同一层节点由 next 指针连接,'#' 标志着每一层的结束。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为。无非是一层一层的遍历所有的节点,然后将前一个节点与后一个节点绑定。,其所有叶子节点都在同一层,每个父节点都有两个子节点。第二个做法比较特别,一只选取最左节点,将其子节点的左节点连上右节点。

2024-02-20 10:19:19 343

原创 17-树-二叉树展开为链表

看结果的输出结果是标准的前序遍历的顺序,在处理的过程中,我们需要断开节点的左孩子,并将右孩子(如果存在)连接到前一个节点的右侧。这是树的第17篇算法,

2024-02-19 10:47:13 336

原创 16-树-路径总和 II

比较上一节返回布尔值就可以了,这回可能复杂一点,我们需要额外存储路径信息,不过其实还好,我们增加一个空间来存储每次遍历的路径就好。路径总和等于给定目标和的路径。是指没有子节点的节点。这是树的第16篇算法,

2024-02-19 10:36:16 357

原创 15-树-路径总和

这是树的第15篇算法,。给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在的路径,这条路径上所有节点值相加等于目标和targetSum。如果存在,返回true;否则,返回false。是指没有子节点的节点。true等于目标和的根节点到叶节点路径如上图所示。

2024-02-18 11:05:11 305

原创 14-树-二叉树的最小深度

当然,递归的操作也可以搞,这里值得注意的是,当左右子叶有一个为空并不代表是最小深度,需要将不为空的一边+1返回,这里为了减少判断,直接返回left+right+1了。最常规的做法就是层级遍历,当左右子叶都为空跳出当前层级高度就可以了。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。给定一个二叉树,找出其最小深度。叶子节点是指没有子节点的节点。这是树的第14篇算法,

2024-02-18 10:16:16 358

原创 13-树-平衡二叉树

平衡二叉树的判断标准是以根节点为起点,判断左右子树的高度,高度在1及以内就平衡,不在1及以内就不平衡。给定一个二叉树,判断它是否是高度平衡的二叉树。的左右两个子树的高度差的绝对值不超过 1。感觉这种思路天然的适合递归来搞。这是树的第13篇算法,

2024-02-07 09:32:03 347

原创 12-树-有序链表转换二叉搜索树

一个可能的答案是[0,-3,9,-10,null,5],它表示所示的高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树。,将其转换为高度平衡的二叉搜索树。的左右两个子树的高度差不超过 1。给定一个单链表的头节点。这是树的第12篇算法,

2024-02-07 09:10:20 400

原创 10-树-从中序与后序遍历序列构造二叉树

这道题和上一篇算法的前序遍历类似,这不过这里的后序遍历涉及到一定的逆逻辑,例如根节点是最后一个节点,右子树的范围到 len(postorder)-1-len(inorder[index+1:])对于二叉搜索树(BST),中序遍历会按照升序访问所有节点,因为二叉搜索树的特点是左子节点的值小于根节点的值,根节点的值小于右子节点的值。后序遍历常用于删除或释放树中的节点。因为你在删除节点之前先访问其子节点,这样可以安全地删除每个节点。是同一棵树的后序遍历,请你构造并返回这颗。是二叉树的中序遍历,

2024-02-07 08:49:43 373

原创 11-树-将有序数组转换为二叉搜索树

二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。排列,请你将其转换为一棵。这是树的第11篇算法,

2024-02-06 10:51:23 334

原创 9-树-从前序与中序遍历序列构造二叉树

这是树的第9篇算法,。给定两个整数数组preorder和inorder,其中preorder是二叉树的inorder是同一棵树的,请构造二叉树并返回其根节点。

2024-02-05 11:06:04 367

原创 8-树-二叉树的最大深度

这道题还是可以用层级遍历来解,每一层count++即可。是指从根节点到最远叶子节点的最长路径上的节点数。迭代的方法也能做,不过要构建新对象记录深度。这是树的第8篇算法,

2024-02-05 10:17:13 340

原创 7-树-二叉树的锯齿形层序遍历

这道题本质还是基础的层级遍历,不过唯一不同的是需要将奇数位的subQuery翻转一下。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。这是树的第7篇算法,

2024-02-04 11:19:48 363

原创 6-树-二叉树的层序遍历 II

这道题和上一道题的区别是从底向上,那我们层级遍历的逻辑就要改成栈的逻辑存储数据。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)还有一种是让数组在最后统一异动len(result)个单位。这是树的第7篇算法,

2024-02-04 11:00:14 375

原创 5-树-二叉树的层序遍历

(即逐层地,从左到右访问所有节点)。这是树的第5篇算法,

2024-02-02 15:02:12 340

原创 4-树-对称二叉树

这道题最简单的思路是递归,左子叶要和右子叶比较来判断对称性。给你一个二叉树的根节点。, 检查它是否轴对称。这是树的第4篇算法,

2024-02-02 11:51:10 357

原创 3-树-相同的树

现在的做法是模拟stack的做法,后入先出的方法遍历这棵树,当然也可以模拟queue,先入先出,这就成了广度优先遍历的逻辑。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。这道题最简单的做法就是递归,也就是传说中的深度优先遍历。,编写一个函数来检验这两棵树是否相同。给你两棵二叉树的根节点。这是树的第3篇算法,

2024-02-01 16:16:02 327

原创 2-树-恢复二叉搜索树

这是树的第二篇算法,。给你二叉搜索树的根节点root,该树中的两个节点的值被错误地交换。请在不改变其结构的情况下,恢复这棵树。3 不能是 1 的左孩子,因为 3 > 1。交换 1 和 3 使二叉搜索树有效。2 不能在 3 的右子树中,因为 2 < 3。交换 2 和 3 使二叉搜索树有效。

2024-02-01 15:50:52 814

原创 《Access Path Selectionin a Relational Database Management System》论文笔记

在实际的数据库查询优化中,优化器会考虑多种因素来选择最佳的连接策略,包括表的大小、索引的存在、连接列的排序状态以及内存的可用量。优化器还会使用统计信息来更精确地估计成本和选择率,从而生成一个总体成本最低的查询执行计划。

2024-01-31 18:50:10 1401

原创 1-树-验证二叉搜索树

终于开启了树的篇章,这是我数据库领域经常用到的算法,这是第一篇,。给你一个二叉树的根节点root,判断其是否是一个有效的二叉搜索树。true我认为,只有右子叶大于根节点,左子叶小于根节点就行,其实不是。这里的要求二叉树是左树都得比根节点小,右树都得比根节点大。所以这里的递归可能不是和当前节点比左右叶子结点,而是根最大最小的边界比根节点。当然,递归可以做的迭代也能搞。我们把树封装进数组,进行中序遍历,大概逻辑就是将左节点放入栈中,一个一个取出和父节点比较大小。

2024-01-31 16:06:54 1403

原创 23-数组-使数组互补的最少操作次数

差分数组是一种用来表示数列的方法,它能够高效地对原始数组的某个区间进行增减操作,同时能够快速计算出区间操作后的结果。对于每个 i ,nums[i] + nums[n-1-i] = 4 ,所以 nums 是互补的。有了差分数组,我们可以更直观的分析索引之间的数据值的变化,在这道题里可以充分应用。差分数组是一种非常实用的数据结构,特别适用于那些需要频繁进行区间更新操作的场景。经过 1 次操作,你可以将数组 nums 变成 [1,2,这样做的效果是,当我们通过差分数组重新计算。的连续子区间进行增减操作。

2024-01-31 15:29:16 704

空空如也

空空如也

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

TA关注的人

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