自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录阅读笔记-动态规划【整数拆分】

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。返回你可以获得的最大乘积。

2024-05-23 21:16:29 465

原创 代码随想录阅读笔记-动态规划【不同路径 II】

从递归公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1] 中可以看出,一定是从左到右一层一层遍历,这样保证推导dp[i][j]的时候,dp[i - 1][j] 和 dp[i][j - 1]一定是有数值。因为从(0, 0)的位置到(i, 0)的路径只有一条,所以dp[i][0]一定为1,dp[0][j]也同理。机器人试图达到网格的右下角(在下图中标记为“Finish”)。dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。

2024-05-20 10:16:12 571

原创 代码随想录阅读笔记-动态规划【不同路径】

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?解释: 从左上角开始,总共有 3 条路径可以到达右下角。

2024-05-17 11:14:29 602

原创 代码随想录阅读笔记-动态规划【使用最小花费爬楼梯】

根据dp数组的定义,到达第0台阶所花费的最小体力为dp[0],那么有同学可能想,那dp[0] 应该是 cost[0],例如 cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1] 的话,dp[0] 就是 cost[0] 应该是1。看一下递归公式,dp[i]由dp[i - 1],dp[i - 2]推出,既然初始化所有的dp[i]是不可能的,那么只初始化dp[0]和dp[1]就够了,其他的最终都是dp[0]dp[1]推出。所以初始化 dp[0] = 0,dp[1] = 0;

2024-05-14 19:42:39 561

原创 代码随想录阅读笔记-动态规划【爬楼梯】

所以我的原则是:不考虑dp[0]如何初始化,只初始化dp[1] = 1,dp[2] = 2,然后从i = 3开始递推,这样才符合dp[i]的定义。还有就是dp[i - 2],上i-2层楼梯,有dp[i - 2]种方法,那么再一步跳两个台阶不就是dp[i]了么。首先是dp[i - 1],上i-1层楼梯,有dp[i - 1]种方法,那么再一步跳一个台阶不就是dp[i]了么。所以dp[i] = dp[i - 1] + dp[i - 2]。那么dp[i]就是 dp[i - 1]与dp[i - 2]之和!

2024-05-12 16:55:02 923

原创 代码随想录阅读笔记-动态规划【斐波那契数】

斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你n ,请计算 F(n)。斐波那契数列大家应该非常熟悉不过了,非常适合作为动规第一道题目来练练手。因为这道题目比较简单,可能一些同学并不需要做什么分析,直接顺手一写就过了。。通过这道题目让大家可以初步认识到,按照动规五部曲是如何解题的。五部曲如下所示。

2024-05-12 15:57:30 296

原创 代码随想录阅读笔记-贪心算法【监控二叉树】

给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。这道题目首先要想,如何放置,才能让摄像头最小的呢?从题目中示例,其实可以得到启发,这是很重要的一个线索,摄像头可以覆盖上中下三层,如果把摄像头放在叶子节点上,就浪费的一层的覆盖。所以把摄像头放在叶子节点的父节点位置,才能充分利用摄像头的覆盖面积。那么有同学可能问了,为什么不从头结点开始看起呢,为啥要从叶子节点看呢?

2024-05-11 21:06:28 776

原创 代码随想录阅读笔记-贪心算法【单调递增的数字】

给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。说明: N 是在 [0, 10^9] 范围内的一个整数。

2024-05-09 10:05:51 370

原创 代码随想录阅读笔记-贪心算法【合并区间】

下附笔者的代码,思路一致,但是有些麻烦,上述代码值得我们学习的地方一是直接在结果集中进行操作,二是使用了lambda表达式,笔者下述的代码就比较繁琐,有兴趣的可以看一下。其实就是用合并区间后左边界和右边界,作为一个新的区间,加入到result数组里就可以了。所以一样的套路,先排序,让所有的相邻区间尽可能的重叠在一起,按左边界,或者右边界排序都可以,处理逻辑稍有不同。这几道题都是判断区间重叠,区别就是判断区间重叠后的逻辑,本题是判断区间重贴后要进行区间合并。给出一个区间的集合,请合并所有重叠的区间。

2024-05-09 09:40:00 166

原创 代码随想录阅读笔记-贪心算法【划分字母区间】

我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。下面将笔者的代码列举如下,思路与上述相同,只不过实现上有所差异(因为用到了很多遍历,所以用时上比较耗时(n平方的复杂度))统计字符串中所有字符的起始和结束位置,记录这些区间(实际上也就是无重叠区间题目里的输入),题目要求同一字母最多出现在一个片段中,那么如何把同一个字母的都圈在同一个区间里呢?一想到分割字符串就想到了回溯,但本题其实不用回溯去暴力搜索。在遍历的过程中相当于是要找每一个字母的边界,

2024-05-08 10:33:57 250

原创 代码随想录阅读笔记-贪心算法【无重叠区间】

本题其实和上一道题射气球非常像,弓箭的数量就相当于是非交叉区间的数量,只要把弓箭那道题目代码里射爆气球的判断条件加个等号(认为[0,1][1,2]不是相邻区间),然后用总区间数减去弓箭数量 就是要移除的区间数量了。就是取 区间1 和 区间2 右边界的最小值,因为这个最小值之前的部分一定是 区间1 和区间2 的重合部分,如果这个最小值也触达到区间3,那么说明 区间 1,2,3都是重合的。给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。区间,1,2,3,4,5,6都按照右边界排好序。

2024-05-08 09:34:58 296

原创 代码随想录阅读笔记-贪心算法【用最少数量的箭引爆气球】

在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。弓箭一旦被射出之后,可以无限地前进。

2024-05-07 15:37:01 434

原创 代码随想录阅读笔记-贪心算法【根据身高重建队列】

但使用vector是非常费时的,C++中vector(可以理解是一个动态数组,底层是普通数组实现的)如果插入元素大于预先普通数组大小,vector底部会有一个扩容的操作,即申请两倍于原先普通数组的大小,然后把数据拷贝到另一个更大的数组上。所以使用vector(动态数组)来insert,是费时的,插入再拷贝的话,单纯一个插入的操作就是O(n^2)了,甚至可能拷贝好几次,就不止O(n^2)了。排序完的people: [[7,0], [7,1], [6,1], [5,0], [5,2],[4,4]]

2024-04-29 15:38:56 736

原创 代码随想录阅读笔记-贪心算法【柠檬水找零】

这道题目可以告诉大家,遇到感觉没有思路的题目,可以静下心来把能遇到的情况分析一下,只要分析到具体情况了,一下子就豁然开朗了。此时大家就发现 情况一,情况二,都是固定策略,都不用我们来做分析了,而唯一不确定的其实在情况三。所以局部最优:遇到账单20,优先消耗美元10,完成本次找零。这道题目刚一看,可能会有点懵,这要怎么找零才能保证完成全部账单的找零呢?而情况三逻辑也不复杂甚至感觉纯模拟就可以了,其实情况三这里是有贪心的。在柠檬水摊上,每一杯柠檬水的售价为 5 美元。只需要维护三种金额的数量,5,10和20。

2024-04-28 10:27:44 236

原创 代码随想录阅读笔记-贪心算法【分发糖果】

如果 ratings[i] > ratings[i + 1],此时candyVec[i](第i个小孩的糖果数量)就有两个选择了,一个是candyVec[i + 1] + 1(从右边这个加1得到的糖果数量),一个是candyVec[i](之前比较右孩子大于左孩子得到的糖果数量)。如果ratings[i] > ratings[i - 1] 那么[i]的糖 一定要比[i - 1]的糖多一个,所以贪心:candyVec[i] = candyVec[i - 1] + 1。再确定左孩子大于右孩子的情况(从后向前遍历)

2024-04-28 10:10:36 816

原创 代码随想录阅读笔记-贪心算法【加油站】

在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。示例 2: 输入:输出: -1解释: 你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。我们从 2 号加油站出发,可以获得 4 升汽油。

2024-04-24 12:20:46 513

原创 代码随想录阅读笔记-贪心算法【K次取反后最大化的数组和】

那么又是一个贪心:局部最优:只找数值最小的正整数进行反转,当前数值和可以达到最大(例如正整数数组{5, 3, 1},反转1 得到-1 比 反转5得到的-5 大多了),全局最优:整个 数组和 达到最大。那么如果将负数都转变为正数了,K依然大于0,此时的问题是一个有序正整数序列,如何转变K次正负,让 数组和 达到最大。贪心的思路,局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。虽然这道题目大家做的时候,可能都不会去想什么贪心算法,一鼓作气,就AC了。

2024-04-23 21:06:51 156

原创 代码随想录阅读笔记-贪心算法【跳跃游戏 II】

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。说明: 假设你总是可以到达数组的最后一个位置。与上题思路是相似的,还是要看最大覆盖范围。本题要计算最少步数,那么就要想清楚什么时候步数才一定要加一呢?贪心的思路,局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。整体最优:一步尽可能多走,从而达到最少步数。

2024-04-23 20:42:53 695

原创 代码随想录阅读笔记-贪心算法【跳跃游戏】

思路也很简单,也是覆盖域的思想,我的做法是把每个位置能达到的位置索引放到一个集合中,遍历完除最后一个元素外数组中所有元素后形成一个到达集合,即这个数组所有能到达的索引集,接着判断能否到达最后一个位置的条件为集合中存在从1到最后一个位置的索引n之间的所有位置,故再使用一次遍历即可达到目标,但是我这样的做法在leetcode上无法通过,会存在一些测例会超时,其实原因也很简单,我这个方法需要遍历两遍数组,并且在构建到达索引集合时还嵌套循环了,时间复杂度为n平方级别,所以很容易便超时了。

2024-04-21 14:01:42 366

原创 代码随想录阅读笔记-贪心算法【买卖股票的最佳时机 II】

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。想获得利润至少要两天为一个交易单元。

2024-04-21 10:40:32 779

原创 代码随想录阅读笔记-贪心算法【最大子数组和】

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

2024-04-20 14:20:57 249

原创 代码随想录阅读笔记-贪心算法【摆动序列】

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长子序列的长度。

2024-04-20 13:04:28 802

原创 代码随想录阅读笔记-贪心算法【分发饼干】

从代码中可以看出我用了一个 index 来控制饼干数组的遍历,遍历饼干并没有再起一个 for 循环,而是采用自减的方式,这也是常用的技巧。这个例子可以看出饼干 9 只有喂给胃口为 7 的小孩,这样才是整体最优解,并想不出反例,那么就可以撸代码了。这种写法,两个循环的顺序改变了,先遍历的饼干,在遍历的胃口,这是因为遍历顺序变了,我们是从小到大遍历。大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子,那么就应该优先满足胃口大的。然后从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计满足小孩数量。

2024-04-19 12:07:06 384

原创 代码随想录阅读笔记-回溯【解数独】

编写一个程序,通过填充空格来解决数独问题。一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 '.' 表示。一个数独。答案被标成红色。棋盘搜索问题可以使用回溯法暴力搜索,只不过这次我们要做的是。怎么做二维递归呢?。

2024-04-18 10:45:36 279

原创 代码随想录阅读笔记-回溯【N皇后】

n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。都知道n皇后问题是回溯算法解决的经典问题,但是用回溯解决多了组合、切割、子集、排列问题之后,遇到这种二维矩阵还会有点不知所措。确定完约束条件,来看看究竟要怎么去搜索皇后们的位置,其实搜索皇后的位置,可以抽象为一棵树。

2024-04-18 10:09:26 513

原创 代码随想录阅读笔记-回溯【重新安排行程】

给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。直觉上来看 这道题和回溯法没有什么关系,更像是图论中的深度优先搜索。实际上确实是深搜,但这是深搜中使用了回溯的例子,在查找路径的时候,如果不回溯,怎么能查到目标路径呢。所以倾向于说本题应该使用回溯法,那么用回溯法的思路来讲解本题,其实深搜一般都使用了回溯法的思路。

2024-04-17 19:36:05 717

原创 代码随想录阅读笔记-回溯【全排列 II】

大家应该很清晰的看到,树层上对前一位去重非常彻底,效率很高,树枝上对前一位去重虽然最后可以得到答案,但是做了很多无用搜索。图中我们对同一树层,前一位(也就是nums[i-1])如果使用过,那么就进行去重。给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。在组合总和以及子集问题中我们分别详细讲解了组合问题和子集问题如何去重。这是为什么呢,就是上面我刚说的,如果要对树层中前一位去重,就用。来来来,我就用输入: [1,1,1] 来举一个例子。,如果要对树枝前一位去重用。

2024-04-16 12:48:35 396

原创 代码随想录阅读笔记-回溯【全排列】

给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例。

2024-04-15 22:25:25 237

原创 代码随想录阅读笔记-回溯【非递减子序列】

题目给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:说明:思路 这个递增子序列比较像是取有序的子集。而且本题也要求不能有相同的递增子序列。在上一道子集题目中我们是通过排序,再加一个标记数组来达到去重的目的。而本题求自增子序列,是不能对原数组进行排序的,排完序的数组都是自增子序列了。所以不能使用之前的去重逻辑!本题给出的示例,还是一个有序数组 [4, 6, 7, 7],这更容易误导大家按照排序的思路去做了。为了有鲜明的对比,我用[4, 7, 6, 7]这个数组来举例,

2024-04-15 09:31:00 268

原创 代码随想录阅读笔记-回溯【子集II】

从图中可以看出,同一树层上重复取2 就要过滤掉,同一树枝上就可以重复取2,因为同一树枝上元素的集合才是唯一子集!本题也可以不使用used数组来去重,因为递归的时候下一个startIndex是i+1而不是0。给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。如果要是全排列的话,每次要从0开始遍历,为了跳过已入栈的元素,需要使用used。这道题目和上一道子集的题目区别就是集合里有重复元素了,而且求取的子集要去重。的基础上加上了去重,去重我们在​​​​​​​。使用set去重的版本。

2024-04-13 19:37:34 386

原创 代码随想录阅读笔记-回溯【子集】

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]求子集问题和组合问题以及切割回文子串问题又不一样了。如果把 子集问题、组合问题、分割问题都抽象为一棵树的话,其实子集也是一种组合问题,因为它的集合是无序的,子集{1,2} 和 子集{2,1}是一样的。

2024-04-13 16:22:50 366

原创 代码随想录阅读笔记-回溯【复原IP地址】

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效的 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "[email protected]" 是 无效的 IP 地址。这道题目大家仔细分析就能意识到这是切割问题,,和上一道回文子串题目就十分类似了。

2024-04-13 15:57:05 807

原创 代码随想录阅读笔记-回溯【分割回文串】

在处理组合问题的时候,递归参数需要传入startIndex,表示下一轮递归遍历的起始位置,这个startIndex就是切割线。

2024-04-12 21:13:06 738

原创 代码随想录阅读笔记-回溯【组合总和II】

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明: 所有数字(包括目标数)都是正整数。解集不能包含重复的组合。。一些同学可能想了:我把所有组合求出来,再用set或者map去重,这么做很容易超时!所以要在搜索的过程中就去掉重复组合。

2024-04-12 19:59:20 565

原创 代码随想录阅读笔记-回溯【组合总和】

题目给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:思路 本题和之前的组合以及组合总和问题区别是:本题没有数量要求,可以无限重复,但是有总和的限制,所以间接的也是有个数的限制。本题搜索的过程抽象成树形结构如下:注意图中叶子节点的返回条件,因为本题没有组合数量要求,仅仅是总和的限制,所以递归没有层数的限制,只要选取的元素总和超过target,就返回!1

2024-04-11 10:40:04 526

原创 代码随想录阅读笔记-回溯【电话号码的字母组合】

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

2024-04-11 09:38:30 678

原创 代码随想录阅读笔记-回溯【组合总和III】

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]]示例 2: 输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]]本题就是在[1,2,3,4,5,6,7,8,9]这个集合中找到和为n的k个数的组合。相对于上一道组合的题目,无非就是多了一个限制,本题是要找到和为n的k个数的组合,而整个集合已经是固定的了[1,...,9]

2024-04-10 10:05:37 689

原创 代码随想录阅读笔记-回溯【组合】

给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]本题是回溯法的经典题目。直接的解法当然是使用for循环,例如示例中k为2,很容易想到 用两个for循环,这样就可以输出 和示例中一样的结果。这时便需要用到回溯搜索法,虽然回溯法也是暴力,但至少能写出来,不像for循环嵌套k层让人绝望。那么回溯法怎么暴力搜呢?上面我们说了。

2024-04-09 15:02:47 743

原创 代码随想录阅读笔记-二叉树【总结】

在二叉树题目选择什么遍历顺序是不少同学头疼的事情,我们做了这么多二叉树的题目了,给大家大体分分类。涉及到二叉树的构造,无论普通二叉树还是二叉搜索树一定前序,都是先构造中节点。求普通二叉树的属性,一般是后序,一般要通过递归函数的返回值做计算。求二叉搜索树的属性,一定是中序了,要不白瞎了有序性了。注意在普通二叉树的属性中,我用的是一般为后序,例如单纯求深度就用前序,​​​​​​​代码随想录阅读笔记-二叉树【二叉树的所有路径】-CSDN博客也用了前序,这是为了方便让父节点指向子节点。

2024-04-09 09:35:33 945

原创 代码随想录阅读笔记-二叉树【二叉搜索树转换为累加树】

给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。提醒一下,二叉搜索树满足下列约束条件:节点的左子树仅包含键 小于 节点键的节点。节点的右子树仅包含键 大于 节点键的节点。左右子树也必须是二叉搜索树。一看到累加树,相信很多小伙伴都会疑惑:如何累加?遇到一个节点,然后再遍历其他节点累加?怎么一想这么麻烦呢。然后再发现这是一棵二叉搜索树,这是有序的啊。

2024-04-09 09:02:04 596

空空如也

空空如也

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

TA关注的人

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