- 博客(110)
- 收藏
- 关注
原创 《代码随想录》Ⅷ 贪心算法 56. 合并区间
每次处理都保证结果集最后一个区间是最新的可合并区间。:合并时取两个区间结束位置的较大值作为新区间的结束。:依次处理每个区间,与结果集中的最后一个区间比较。:首先将所有区间按照起始位置进行排序。:确保后续只需线性扫描即可完成合并。:使所有区间按起始位置有序排列。革命尚未成功,同志仍需努力!:使用自定义比较函数。
2025-04-01 00:16:10
394
原创 《代码随想录》Ⅷ 贪心算法 763. 划分字母区间
我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。关键点在于:通过维护当前区间的最大边界,确保区间内所有字母都不会出现在后续区间中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是。返回一个表示每个字符串片段的长度的列表。革命尚未成功,同志仍需努力!:当前指针到达区间最大边界。:维护当前区间的首尾指针。 的划分是非法的。
2025-03-31 23:58:51
356
原创 《代码随想录》Ⅷ 贪心算法 435. 无重叠区间
优先保留结束早的区间(结束早意味着给后续留出更多空间):将"最少移除区间数"转化为"最多保留不重叠区间数"需要移除区间的最小数量,使剩余区间互不重叠。革命尚未成功,同志仍需努力!只在一点上接触的区间是。
2025-03-31 00:39:14
339
原创 《代码随想录》Ⅷ 贪心算法 452. 用最少数量的箭引爆气球
一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,如果一个气球的直径的开始和结束坐标为。,则该气球会被引爆。可以射出的弓箭的数量没有限制。弓箭一旦被射出之后,可以无限地前进。我们有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组。:将每个气球看作一个区间,问题转化为找到最少的点,使得每个区间至少包含一个点。,返回引爆所有气球所必须射出的最小弓箭数。我们不知道气球的确切 y 坐标。 表示第 i 个气球的水平直径在。:首先将所有区间按照起始点进行排序。
2025-03-31 00:12:35
553
原创 《代码随想录》Ⅷ 贪心算法 406. 根据身高重建队列
具体来说,我们需要按照一定的规则对人群进行排序,然后在合适的位置插入每个人,以确保最终队列满足题目的要求。通过这种贪心策略,我们可以确保在插入每个人时,前面已经插入的人的身高都是大于或等于当前人的身高,并且。 表示队列中一些人的属性(不一定按顺序)。返回的队列应该格式化为数组。假设有打乱顺序的一群人站成一个队列,数组。:将每个人插入到队列的合适位置,以确保前面有。个身高大于或等于当前人的人。 个身高大于或等于。请你重新构造并返回输入数组。 是排在队列前面的人)。这道题的核心思想是使用。
2025-03-17 11:20:01
661
原创 《代码随想录》Ⅷ 贪心算法 860. 柠檬水找零
即在每一步选择中,尽可能多地使用现有的零钱来进行找零,以确保能够满足后续的找零需求。具体来说,当顾客支付10元或20元时,优先使用10元进行找零,因为10元只能用于找零5元,而5元可以用于更多的找零场景。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付。如果你能给每位顾客正确找零,返回。:根据顾客支付的金额进行找零,并更新零钱数量。顾客排队购买你的产品,(按账单。每位顾客只买一杯柠檬水,然后向你付。注意,一开始你手头没有任何零钱。 支付的顺序)一次购买一杯。这道题的核心思想是使用。
2025-03-17 10:50:16
520
原创 《代码随想录》Ⅷ 贪心算法 135. 分发糖果
确保如果当前孩子的评分比前一个孩子高,则当前孩子的糖果数比前一个孩子多1。:确保如果当前孩子的评分比后一个孩子高,则当前孩子的糖果数比后一个孩子多1。通过这种方式,可以确保每个孩子都能满足条件,并且总糖果数是最小的。请你给每个孩子分发糖果,计算并返回需要准备的。 个孩子站成一排。:初始时,每个孩子都分配1个糖果。 表示每个孩子的评分。这道题的核心思想是使用。
2025-03-17 10:17:24
861
原创 《代码随想录》Ⅷ 贪心算法 134. 加油站
通过计算每个加油站的汽油剩余量,找到能够环绕所有加油站一周的起始点。 ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回。你从其中的一个加油站出发,开始时油箱为空。:找到能够环绕所有加油站一周的起始点。你有一辆油箱容量无限的的汽车,从第。 个加油站需要消耗汽油。 个加油站,其中第。这道题的核心思想是使用。
2025-03-17 09:59:41
510
原创 《代码随想录》Ⅷ 贪心算法 1005. K 次取反后最大化的数组和
为奇数,说明还需要进行一次取反操作,选择数组中绝对值最小的元素进行取反。:遍历数组,对负数进行取反操作,直到用完所有的取反次数。可以多次选择同一个下标。以这种方式修改数组后,返回数组。:计算数组所有元素的和并返回。这道题的核心思想是使用。
2025-03-17 09:43:18
599
原创 《代码随想录》Ⅷ 贪心算法 45. 跳跃游戏 II
通过维护当前能够跳跃的最远距离和当前跳跃的边界,来逐步更新跳跃次数。具体来说,我们通过遍历数组,不断更新当前能够跳跃的最远距离,当遍历到当前跳跃的边界时,增加跳跃次数,并将边界更新为新的最远距离。这样,我们可以在一次遍历中计算出到达数组最后一个元素所需的最小跳跃次数。:更新当前能够跳跃的最远距离,并检查是否需要增加跳跃次数。 向后跳转的最大长度。 的最小跳跃次数。生成的测试用例可以到达。:初始化变量,准备遍历数组。 处,你可以跳转到任意。:返回最终的最小跳跃次数。这道题的核心思想是使用。
2025-03-14 10:38:09
261
原创 《代码随想录》Ⅷ 贪心算法 55. 跳跃游戏
贪心算法的关键在于每一步都做出局部最优的选择,最终达到全局最优。在这道题中,局部最优的选择就是尽可能跳跃到最远的位置,从而最大化覆盖范围。,并检查是否能够覆盖到数组的最后一个位置。如果能够覆盖到最后一个位置,说明可以从起点跳跃到终点,返回。:更新当前能够到达的最远距离,并检查是否能够覆盖到最后一个位置。 来表示当前能够到达的最远距离。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回。:初始化变量,准备遍历数组。 ,你最初位于数组的。:返回最终判断结果。
2025-03-14 09:57:19
396
原创 《代码随想录》Ⅷ 贪心算法 53. 最大子数组和
这道题的核心思想是使用贪心算法,通过动态维护当前子数组的和来找到最大子数组和。具体来说,我们遍历数组,累加当前元素到当前子数组和curValue中。如果curValue小于等于0,说明当前子数组和对结果没有贡献,因此将curValue重置为0,重新开始计算新的子数组和。通过这种方式,我们可以确保在遍历过程中始终记录下最大的子数组和。 ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。:计算当前子数组和,并动态更新最大子数组和。是数组中的一个连续部分。
2025-03-13 09:42:42
337
原创 《代码随想录》Ⅷ 贪心算法 376. 摆动序列
摆动序列的特点是相邻元素之间的差值在正负之间交替变化。我们可以通过遍历数组,记录每次差值变化的方向,从而确定摆动序列的长度。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。的符号相反,说明出现了摆动,此时我们可以增加摆动序列的长度,并更新。如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为。通过这种方式,我们可以找到最长的摆动子序列。这道题的核心思想是使用贪心算法,
2025-03-13 09:25:19
790
原创 《代码随想录》Ⅷ 贪心算法 455. 分发饼干
具体来说,我们先将孩子和饼干的胃口大小数组分别进行排序,然后从最大的孩子和最大的饼干开始匹配。如果当前饼干能够满足当前孩子的胃口,就将该饼干分配给孩子,并继续匹配下一个孩子和下一个饼干。如果当前饼干不能满足当前孩子的胃口,则继续尝试下一个更小的饼干。通过这种方式,我们可以确保每次分配都是当前最优的选择,从而达到全局最优解。假设你是一位很棒的家长,想要给你的孩子们一些小饼干。你的目标是满足尽可能多的孩子,并输出这个最大数值。:从最大的孩子和最大的饼干开始匹配,尽可能多地满足孩子的胃口。
2025-03-13 09:14:03
746
原创 《代码随想录》Ⅶ 回溯算法 332.重新安排行程
由于题目要求按字典序返回最小的行程组合,因此在选择下一个目的地时,我们需要优先选择字典序较小的机场。为了实现这一点,我们使用了一个嵌套的数据结构:unordered_map<string, map<string, int>>,其中外层unordered_map的键是出发机场,内层map的键是到达机场,值是该航班的剩余次数。如果存在多种有效的行程,请你按字典排序返回最小的行程组合。:递归地尝试从当前机场出发,选择下一个目的地,并构建有效的行程路径。:从当前机场出发,遍历所有可能的目的地。
2025-03-12 23:26:02
660
原创 《代码随想录》Ⅶ 回溯算法-棋盘 37. 解数独
回溯算法是一种通过递归来枚举所有可能的解,并在每一步尝试中剪枝(即排除无效解)的算法。在数独问题中,我们需要在每一个空格中尝试填入数字1-9,并检查是否符合数独的规则。如果不符合,则回溯到上一步,尝试下一个数字。:递归地尝试在每一个空格中填入数字,并通过剪枝操作避免生成无效的解。编写一个程序,通过填充空格来解决数独问题。函数检查当前填入的数字是否符合数独规则。数独部分空格内已填入了数字,空白格用。:遍历整个数独棋盘,找到空位(用。:在空位中尝试填入数字1-9。:调用回溯函数,解决数独问题。
2025-03-11 17:37:02
409
原创 《代码随想录》Ⅶ 回溯算法-棋盘 51. N 皇后
回溯算法是一种通过递归尝试所有可能的解,并在发现当前解不符合条件时进行回退的算法。在N皇后问题中,我们需要在每一行放置一个皇后,并确保每一列和每一条斜线上都没有其他皇后。通过递归地尝试每一行的每一个可能的位置,并在放置皇后后检查是否满足条件,最终找到所有可能的解。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。:递归地尝试在每一行放置皇后,并通过剪枝操作避免生成无效的解。:初始化棋盘并调用回溯函数,生成所有可能的解。 函数,尝试在每一行放置皇后。:返回生成的所有可能的解。
2025-03-11 16:50:27
710
原创 《代码随想录》Ⅶ 回溯算法-排列 47. 全排列 II
这道题的核心思想是使用回溯算法来生成所有可能的全排列,同时通过排序和剪枝操作避免生成重复的排列。回溯算法是一种通过递归遍历所有可能解的方法,通常用于解决组合、排列、子集等问题。在本问题中,由于数组 nums 可能包含重复数字,因此需要在生成排列时进行去重操作,以确保最终结果中不包含重复的排列。:递归地生成所有可能的全排列,并通过剪枝操作避免生成重复的排列。:初始化并调用回溯函数,生成所有不重复的全排列。:通过排序和剪枝操作来避免生成重复的排列。:返回生成的所有不重复的全排列。 函数生成所有可能的全排列。
2025-03-11 14:51:17
765
原创 《代码随想录》Ⅶ 回溯算法-子集 491. 非递减子序列
来生成所有可能的递增子序列。由于数组中可能包含重复元素,我们需要在回溯过程中进行去重操作。具体来说,我们通过一个。数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。 ,找出并返回所有该数组中不同的递增子序列,递增子序列中。来记录当前路径中已经使用过的元素,避免生成重复的子序列。:递归地生成所有可能的递增子序列,并避免生成重复的子序列。:初始化并调用回溯函数,生成所有可能的递增子序列。这道题的核心思想是使用。
2025-03-11 14:30:03
322
原创 《代码随想录》Ⅶ 回溯算法-子集 90. 子集 II
来生成所有可能的子集。由于数组中可能包含重复元素,为了避免生成重复的子集,我们需要在回溯过程中进行剪枝操作。具体来说,我们在递归时跳过与前一个元素相同且未被使用的元素,从而确保不会生成重复的子集。 ,其中可能包含重复元素,请你返回该数组所有可能的 子集(幂集)。:递归地生成所有可能的子集,并避免生成重复的子集。返回的解集中,子集可以按。:初始化并调用回溯函数,生成所有可能的子集。这道题的核心思想是使用。
2025-03-11 14:12:19
622
原创 《代码随想录》Ⅶ 回溯算法-子集 78. 子集
来生成所有可能的子集。通过递归地尝试将数组中的每个元素加入或不加入当前子集,最终生成所有可能的子集组合。由于数组中的元素互不相同,因此生成的子集也不会重复。:初始化并调用回溯函数,生成所有可能的子集。返回该数组所有可能的子集(幂集)。:递归地生成所有可能的子集。这道题的核心思想是使用。
2025-03-11 13:55:55
629
原创 《代码随想录》Ⅶ 回溯算法-分割 93. 复原 IP 地址
这道题的核心思想是使用回溯算法来生成所有可能的IP地址组合。通过递归地尝试在每个可能的位置插入点号(.),并确保每个子串是有效的IP地址段(即0到255之间的整数,且不以0开头,除非是0本身),最终生成所有合法的IP地址。:初始化并调用回溯函数,生成所有可能的IP地址组合。 ,用以表示一个 IP 地址,返回所有可能的。:判断给定子串是否为有效的IP地址段。:递归地生成所有可能的IP地址组合。正好由四个整数(每个整数位于。 之间组成,且不能含有前导。给定一个只包含数字的字符串。,这些地址可以通过在。
2025-03-11 13:45:00
703
原创 《代码随想录》Ⅶ 回溯算法-分割 131. 分割回文串
来生成所有可能的回文子串分割方案。回溯算法通过递归的方式,逐步构建解空间树,并在过程中进行剪枝,以避免无效的搜索。具体来说,我们从字符串的起始位置开始,尝试将其分割成不同的子串,并检查这些子串是否为回文串。如果是回文串,则将其加入当前分割方案,并递归地处理剩余的字符串。如果当前分割方案中的所有子串都是回文串,则将其加入结果集。:初始化并调用回溯函数,生成所有可能的回文子串分割方案。:递归地生成所有可能的回文子串分割方案。:判断给定子串是否为回文串。这道题的核心思想是使用。
2025-03-11 13:19:44
639
原创 《代码随想录》Ⅶ 回溯算法-组合 40. 组合总和 II
来生成所有可能的组合。回溯算法通过递归的方式,逐步构建解空间树,并在过程中进行剪枝,以避免无效的搜索。具体来说,我们从候选数组中依次选择数字,尝试将其添加到当前组合中,并递归地处理剩余的目标值。如果当前组合的和等于目标值,则将其加入结果集;如果超过了目标值,则回溯并尝试其他可能的组合。为了确保组合的唯一性,我们需要对候选数组进行排序,并在递归过程中跳过重复的数字。:递归地生成所有可能的组合,使得这些组合的和等于。:初始化并调用回溯函数,生成所有可能的组合。 中的每个数字在每个组合中只能使用。
2025-03-11 12:41:36
565
原创 《代码随想录》Ⅶ 回溯算法-组合 39. 组合总和
来生成所有可能的组合。回溯算法是一种通过递归来枚举所有可能解的算法,特别适用于组合、排列、子集等问题。在本题中,我们需要从给定的候选数字中找出所有和为。:通过递归尝试所有可能的组合,并在每一步进行选择、递归和撤销选择(回溯)。如果至少一个数字的被选数量不同,则两种组合是不同的。:递归地生成所有可能的组合,使得这些组合的和等于。:初始化并调用回溯函数,生成所有可能的组合。:在递归过程中,如果当前组合的和已经超过。 的组合,并且同一个数字可以重复使用。,则可以直接停止递归,避免无效的搜索。
2025-03-11 11:20:21
844
原创 《代码随想录》Ⅶ 回溯算法-组合 17. 电话号码的字母组合
来生成所有可能的组合:在这道题中,我们需要根据输入的数字字符串,生成所有可能的字母组合。每个数字对应多个字母,我们需要遍历所有可能的字母组合,并将符合条件的组合保存到结果集中。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 的字符串,返回所有它能表示的字母组合。:初始化并调用回溯函数,生成所有可能的组合。:递归地生成所有可能的组合。这道题的核心思想是使用。
2025-03-11 10:56:53
311
原创 《代码随想录》Ⅶ 回溯算法-组合 216. 组合总和 III
该列表不能包含相同的组合两次,组合可以以任何顺序返回。:初始化并调用回溯函数,生成所有可能的组合。:递归地生成所有可能的组合。所有可能的有效组合的列表。这道题的核心思想是使用。
2025-03-10 11:37:51
578
原创 《代码随想录》Ⅶ 回溯算法-组合 77. 组合
来生成所有可能的组合。回溯算法是一种通过递归来探索所有可能解的算法,通常用于解决组合、排列、子集等问题。在这道题中,我们需要从范围。通过这种方式,我们可以遍历所有可能的组合,并确保每个组合都是唯一的。:初始化并调用回溯函数,生成所有可能的组合。:递归地生成所有可能的组合。 个数的所有可能组合。这道题的核心思想是使用。
2025-03-10 11:08:39
479
原创 《代码随想录》Ⅵ 二叉树 538. 把二叉搜索树转换为累加树
通常的中序遍历顺序是“左-根-右”,而反中序遍历的顺序是“右-根-左”。通过这种方式,我们可以从二叉搜索树(BST)的最大值开始遍历,逐步累加节点的值,从而将BST转换为累加树(Greater Sum Tree)。给出二叉搜索树(BST)的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点。:通过反中序遍历,从最大节点开始,逐步累加节点值,并修改节点值。 的新值等于原树中大于或等于。
2025-03-10 09:51:23
571
原创 《代码随想录》Ⅵ 二叉树 108. 将有序数组转换为二叉搜索树
将一个升序排列的整数数组转换为高度平衡的 二叉搜索树(BST)。由于数组已经有序,我们可以通过递归的方式将数组的中间元素作为根节点,然后将数组分为左右两部分,分别递归构建左子树和右子树。这样做的目的是保证生成的 BST 是高度平衡的,即左右子树的高度差不超过 1。:通过递归将有序数组的中间元素作为根节点,并分别构建左右子树。
2025-03-09 23:55:15
304
原创 《代码随想录》Ⅵ 二叉树 669. 修剪二叉搜索树
改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。通过递归和分情况讨论,可以高效地完成修剪操作,并保持 BST 的结构不变。在二叉搜索树(BST)中修剪节点,使得所有节点的值在。:通过递归判断当前节点是否需要保留,并修剪其子树。修剪时,我们从根节点开始,根据当前节点的值与。通过修剪二叉搜索树,使得所有节点的值在。给你二叉搜索树的根节点。 ,同时给定最小边界。
2025-03-09 23:39:32
659
原创 《代码随想录》Ⅵ 二叉树 701. 二叉搜索树中的插入操作
删除时,我们从根节点开始,根据要删除的节点值与当前节点值的大小关系,决定向左子树或右子树递归查找要删除的节点。在二叉搜索树(BST)中删除一个节点,并返回删除后的树根节点。对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。:通过递归查找要删除的节点,并根据其子树情况分情况处理。给定一个二叉搜索树的根节点。,删除二叉搜索树中的。
2025-03-09 00:07:36
724
原创 《代码随想录》Ⅵ 二叉树 701. 二叉搜索树中的插入操作
插入时,我们从根节点开始,根据新节点的值与当前节点值的大小关系,决定向左子树或右子树递归查找插入位置。当找到合适的位置时,创建新节点并插入。在二叉搜索树(BST)中插入一个新节点,并返回插入后的树根节点。,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 ,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。:通过递归查找插入位置,并在合适的位置创建新节点。,新值和原始二叉搜索树中的任意节点值都不同。给定二叉搜索树(BST)的根节点。 和要插入树中的值。
2025-03-08 23:33:07
263
原创 《代码随想录》Ⅵ 二叉树 235. 二叉搜索树的最近公共祖先
中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。的方式来高效地找到两个节点的最近公共祖先(LCA)。要解决这道题,首先需要明确。基于这个性质,我们可以利用。 的最近公共祖先。
2025-03-08 23:07:47
824
原创 《代码随想录》Ⅵ 二叉树 236. 二叉树的最近公共祖先
中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(:从叶子节点开始,逐层向上返回结果,这样可以在递归过程中找到最近的公共祖先。由于我们需要找到两个节点的最近公共祖先,因此可以通过。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。要解决这道题,首先需要明确。:如果当前节点为空或等于。,则直接返回当前节点。 的最近公共祖先。
2025-03-08 22:53:28
720
原创 《代码随想录》Ⅵ 二叉树 98. 验证二叉搜索树
由于 BST 中可能存在重复值,因此我们可以通过中序遍历将节点值按升序存入。,然后统计每个值的出现频率,找到出现频率最高的值(众数)。给你一个含重复值的二叉搜索树(BST)的根节点。 中,统计每个值的出现频率,并收集众数。 ,找出并返回 BST 中的所有。:将 BST 的节点值按升序存入。如果树中有不止一个众数,可以按。(即,出现频率最高的元素)。要解决这道题,首先需要明确。(当前值的计数)、
2025-03-08 22:29:42
647
原创 《代码随想录》Ⅵ 二叉树 98. 验证二叉搜索树
在最初的错误思路中,我尝试通过递归计算当前节点与其直接子节点之间的差值,来找到最小绝对差。因此,我们只需要在中序遍历的过程中,计算相邻节点之间的差值,并记录最小值即可。:在解决 BST 相关问题时,务必充分利用其。差值是一个正数,其数值等于两值之差的绝对值。 中,计算相邻元素的差值,并记录最小值。:将 BST 的节点值按升序存入。的性质,避免陷入局部最优解。给你一个二叉搜索树的根节点。要解决这道题,首先需要明确。
2025-03-08 22:15:13
420
原创 《代码随想录》第六章 二叉树 98. 验证二叉搜索树
要解决这道题,首先需要明确 二叉搜索树(BST) 的性质,并利用这些性质进行判断。基于以上性质,我们可以通过递归或迭代的方式,检查每个节点是否满足 BST 的条件。 ,判断其是否是一个有效的二叉搜索树。给你一个二叉树的根节点。
2025-03-05 20:53:19
567
原创 《代码随想录》第六章 二叉树 700. 二叉搜索树中的搜索
在二叉搜索树(BST)中搜索特定值的节点,可以利用BST的性质来高效地完成搜索。返回以该节点为根的子树。如果节点不存在,则返回。你需要在 BST 中找到节点值等于。给定二叉搜索树(BST)根节点。基于这个性质,我们可以采用。的方式来实现搜索操作。
2025-03-05 20:15:11
510
原创 《代码随想录》第六章 二叉树 617. 合并二叉树
想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;合并两棵二叉树的规则是:如果两个节点重叠,则它们的值相加作为新节点的值;否则,非空的节点直接作为新二叉树的节点。这个过程可以通过递归的方式实现,从根节点开始,逐步合并左子树和右子树。null 的节点将直接作为新二叉树的节点。合并过程必须从两个树的根节点开始。:递归地合并左子树和右子树。返回合并后的二叉树。
2025-03-05 19:57:26
667
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人