自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第五十六天|647. 回文子串、516. 最长回文子序列、总结:https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%

LeetCode 647. 回文子串。

2024-03-14 15:13:41 342

原创 代码随想录算法训练营第五十五天|583. 两个字符串的删除操作 、72. 编辑距离 、编辑距离总结篇 、总结:https://programmercarl.com/%E4%B8%BA%E4%BA%86

LeetCode 583. 两个字符串的删除操作。

2024-03-14 14:53:59 321

原创 代码随想录算法训练营第五十四天|392.判断子序列、115.不同的子序列

LeetCode 115.不同的子序列。LeetCode 392.判断子序列。

2024-03-14 14:48:33 375

原创 代码随想录算法训练营第六十天|84. 柱状图中最大的矩形

LeetCode 84. 柱状图中最大的矩形。

2023-11-27 22:47:01 423

原创 代码随想录算法训练营第五十九天|503. 下一个更大元素 II、42. 接雨水

的基础上,进行循环遍历,因此我们就采用取模的方式来循环。之前好像考虑使用双指针尝试过该题,这次采用单调栈来实现。LeetCode 503. 下一个更大元素 II。LeetCode 42. 接雨水。

2023-11-27 22:31:44 438

原创 代码随想录算法训练营第五十七天|739. 每日温度、496.下一个更大元素 I

先看是示例,题目意思是nums1中每个元素存在与nums2,对nums1中每个元素在nums2中对应位置之后进行判别,找到更大的元素,同样和上一题一样涉及到了位置距离的判别,因此同样使用单调栈。单调栈开始,为什么要用栈,因为栈是先入后出,当我们遍历从前往后的时候,每次遍历的元素都是添加至栈尾,方便我们进行比较,满足条件计算下标差值(因为是求几天后比今天热),不满足就继续走。LeetCode 496.下一个更大元素 I。LeetCode 739. 每日温度。

2023-11-27 22:26:26 488

原创 代码随想录算法训练营第五十三天|1143. 最长公共子序列、1035.不相交的线、53.最大子数组和

和上一题很像,注意状态转移,相同则+1,否则由前面的最大值转移而来。看起来不一样,实际上多读读题,其实就是同一道题啊。LeetCode 1143. 最长公共子序列。LeetCode 1035. 不相交的线。要么加上去,要么重新开始,很简单的DP。LeetCode 53.最大子数组和。

2023-11-27 13:53:11 388

原创 代码随想录算法训练营第五十二天|300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

在上一题目的基础上,要求连续,也就是说如果不连续了,中间小了(不保持递增状态了),则重新讲当前长度定为1,因此我们的dp数组在初始化时就将所有长度初始化为1,因为要递增,因此判断的条件是当前序号的大小大于前一个序号的大小,讲当前长度增加1,也就是dp[i]增加1。递增子序列,就是当前的数大于前一个数,题目要求不改变其余元素顺序,容易想到这像DFS中的选与不选,如果大于前一个就选,否则不选,选了之后再看看长度如何。LeetCode 674. 最长连续递增序列。LeetCode 718. 最长重复子数组。

2023-11-27 12:58:01 402

原创 代码随想录算法训练营第五十天|309. 买卖股票的最佳时机含冷冻期、714. 买卖股票的最佳时机含手续费

所谓的冷冻期,就是卖了股票后的第二天不能买入该股票(股票上的N+2,N+1是今天卖明天能买),所以影响到的是递推公式中买股票的情况,也就是状态转移时候第i天的买入是从第i-2天的状态转移过来的。这道题很简单,其实就是在每次卖出的时候都减去该笔交易的手续费就好,每一笔手续费都是固定值fee,所以状态转移方程是dp[i][1] = dp[i-1][0] + prices[i] -fee。LeetCode 309. 买卖股票的最佳时机含冷冻期。LeetCode 714. 买卖股票的最佳时机含手续费。

2023-11-27 10:24:14 331

原创 代码随想录算法训练营第四十九天|123. 买卖股票的最佳时机III 、188. 买卖股票的最佳时机 IV

这个道题和121. 买卖股票的最佳时机 I、122. 买卖股票的最佳时机 II很像,是两题的结合。这又是上一题的一个进阶版,其实我们上一题考虑了两个,这次直接来一个DP数组就OK。LeetCode 123. 买卖股票的最佳时机 III。LeetCode 188. 买股票的最佳时机IV。我们就定义两个数组来实现。

2023-11-26 13:47:04 355

原创 代码随想录算法训练营第四十八天|121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 II

DP:定义和上一题一样,但是注意一下中间对于每个位置上拥有股票的最大价值,就应该有一个初始状态了,也就是dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i])。贪心:这道题对该只股票可以重复购买,因此我们贪心做法可有如此思路:不断计算当前价格与前一天价格的差值,如果大于0(涨了)就放在股票账户上,小于0(跌了)就不计入了。DP的话,注意二维DP的列,当为0的时候表示为买了股票的账户最大价值,1表示为没买股票的账户最大价值,详见注释。

2023-11-26 12:38:38 431

原创 代码随想录算法训练营第四十七天|198. 打家劫舍、213. 打家劫舍II、337. 打家劫舍III

同样的,dp[n]代表,偷前n家的时候所能偷到的最高金额,递推公式是dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])第一次打家劫舍,来个简单一些的,无非就是偷了当前这家偷不了下一家,因此dp[n]代表,偷前n家的时候所能偷到的最高金额,递推公式是dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])2)确定递推公式:dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])4)确定遍历的数:边界为2,到n。

2023-11-25 21:42:08 472

原创 代码随想录算法训练营第四十六天|139.单词拆分、背包问题总结

这道题使用完全背包来实现,我们首先考虑字符串是否可以由字符串列表组成,因此dp数组大小为n + 1 ,其意义是,在n个位置时是否能拼接成功。因此,当前n状态由前面状态所转移确定。2)确定递推公式:我们把n个数的状态,看作i之前j到i的字母是否能在字符串列表中存在。1)确定dp数组下标与值的关系:处于n位时是否能拼接成功。3)确定初始值:dp[0]为1,没得选。LeetCode 139. 单词拆分。4)确定遍历的数:注意一下边界问题。

2023-11-25 11:15:43 484

原创 代码随想录算法训练营第四十五天|57. 爬楼梯、322.零钱兑换、279. 完全平方数

这道题使用完全背包来实现,要求的组成整数amount的最小硬币组合数,因此dp数组大小为n + 1 ,其意义是,在n阶时最小的硬币数量,因此,当前n状态等于前面状态的最小值。2)确定递推公式:dp[i] = min(dp[i], dp[i - j ** 2] + 1) (后面这个意思是从前j**2的位置递推过来,加上一个完全平方数)2)确定递推公式:dp[i] = min(dp[i], dp[i - coin] + 1) (后面这个意思是从前coin的位置递推过来,加上一个硬币数)

2023-11-25 10:46:33 399

原创 代码随想录算法训练营第四十三天|518. 零钱兑换II、377. 组合总和 IV

因此对于该题,我们考虑一下,和上面那刀分而治之挺像的,永远关注与当前的选择,当前能选的全部选进去。2)确定递推公式:我们把n个数组成看作1与n-1个组成,使用分而治之的思路来处理,dp[i] += dp[i - coin]2)确定递推公式:我们把n个数组成看作1与n-1个组成,使用分而治之的思路来处理,dp[i] += dp[i - num]1)确定dp数组下标与值的关系:满足凑出总金额的组合数。1)确定dp数组下标与值的关系:满足凑出的组合数。3)确定初始值:dp[0]为1,没得选。

2023-11-24 00:42:21 308

原创 代码随想录算法训练营第四十二天|1049. 最后一块石头的重量II、494. 目标和、474. 一和零

这道题感觉也是DFS,我们用DP来做,思路就是遍历所有的str,使用collections里的counter来计算一下1与0的个数,随后我们用一个二维数组dp[i][j]来得到一个子集元素最多的满足条件的子集,(i表示1的个数,j表示0的个数)。2)确定递推公式:二维数组,赋值的时候都是0,后面要求最大的,因此要么是当前的个数,要么是从前来的(dp[i - one_num][j - zero_num]从这里推过来,当然个数就要+1)4)确定遍历的数:都是逆向的,其实这和前面的题目有点像,像两个内循环。

2023-11-24 00:28:49 354

原创 代码随想录算法训练营第四十一天|46. 携带研究材料、416. 分割等和子集

2)确定递推公式:如果说j<当前物品的重量,则dp[i][j] = dp[i - 1][j],如果说>=的话,可以选,我们就判断最大价值,就是dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i - 1] + values[i - 1]今天来到0-1背包问题,二维数组dp[i][j]中i表示为前i个物品其重量,j表示为给多少空间,得到的数为前两个条件下的最大价值。3)确定初始值:dp[0][0]肯定是0,一点空间也没,一件物品也没,当然价值为0。

2023-11-14 20:31:06 64

原创 代码随想录算法训练营第四十天| 343. 整数拆分、96. 不同的二叉搜索树

注意两个关键:1)要分成大于1个正整数来去乘积,2)分成3比2好,4可以看成为,5不如2和3,6就是两个3,后面同理,因此这道题其实第一直觉是一个贪心题,尽量地分为3,不够的话就把后面乘一下就好了。这道题是真的不看解析看不懂,但是可以大概知道怎么做:我们先选好根节点,其他的点小的放左边,大的放右边,如何放呢?4)确定遍历的数:题目告诉了dp[0],dp[1],所以我们要从第2位一直到第n位。1)确定dp数组下标与值的关系:对于该题就是第n位的和。3)确定初始值:题目已给出。3)确定初始值:题目已给出。

2023-11-14 14:00:42 51

原创 代码随想录算法训练营第三十九天| 62. 不同路径、63. 不同路径 II

3)确定初始值:dp[0][0] == 1,第一行第一列的都要初始为1,注意判断一下初始位置与结束位置是否存在障碍物,存在则直接返回0(即是不可到达)该题在上一道题的基础上,增加了障碍物,用原始数组的1来表示,所以我们要增加这样的考虑,被堵住了就不能再用了。3)确定初始值:dp[0][0] == 1,第一行第一列的都要初始为1。1)确定dp数组下标与值的关系:当前位置存在的可能路径。1)确定dp数组下标与值的关系:当前位置存在的可能路径。2)确定递推公式:要么上边来的,要么左边来的。

2023-11-14 12:49:28 618

原创 代码随想录算法训练营第三十八天| 509. 斐波那契数列、70. 爬楼梯、746. 使用最小花费爬楼梯

4)确定遍历的数:题目告诉了dp[0],dp[1],所以我们要从第2位一直到第n位。4)确定遍历的数:题目告诉了dp[0],dp[1],所以我们要从第2位一直到第n位。4)确定遍历的数:题目告诉了dp[0],dp[1],所以我们要从第2位一直到第n位。3)确定初始值:从题目意思可以确定一下dp[0],dp[1]=0,0。3)确定初始值:从示例1可以确定一下dp[0],dp[1]=1,1。1)确定dp数组下标与值的关系:对于该题就是第n位的和。1)确定dp数组下标与值的关系:对于第n阶所需最小花费。

2023-11-14 10:58:22 36

原创 代码随想录算法训练营第三十六天| 738. 单调递增的数字

LeetCode 738. 单调递增的数字。这道题两种思路,卡哥的思路不说了。

2023-11-13 22:34:10 40

原创 代码随想录算法训练营第三十五天| 435. 无重叠区间、763. 划分字母区间、56. 合并区间

这道题其实还是比较难的,但是可以读出来确实是贪心的做法,卡哥教的做法比较巧妙,我们通过一个hashmap来存该字母出现最晚的位置,然后初始化一个左边界begin,与一个右边界end来每次确定每次划分区间的长度,那么在两个区间中不断比较每个数的最晚位置,使得右边界end是该区间的最大数,不会漏掉数没计算。这样就可以在不破坏原始顺序的情况下返回最多片段数的划分办法了。上一道题能理解的话这道题是比较简单的,两个条件,互不重叠切全部覆盖,也就是说本来重叠的两个区间,我们取最小的边界与最大的边界即可满足条件。

2023-11-13 17:18:38 54

原创 代码随想录算法训练营第三十四天|860. 柠檬水找零、406. 根据身高重建队列、452.用最少数量的箭引爆气球

这道题是真牛逼,反正我自己想不出来,要从左向右排列,再反向排一次。先根据匿名函数来排序,排完之后插入。其实就是人家用20买柠檬水的时候,优先把10块给花了就行。LeetCode 452.用最少数量的箭引爆气球。LeetCode 406. 根据身高重建队列。LeetCode 860. 柠檬水找零。

2023-10-26 23:17:46 64

原创 代码随想录算法训练营第三十三天|005. K次取反后最大化的数组和、134. 加油站、135. 分发糖果

做编程题之前一定要读懂题目,看下条件:每个孩子至少一个糖果,如果我比身边孩子分数高肯定要给更多的糖果。应该是1个,因为B没有比A多.........好吧,注意了这个情况后开始写代码,按照卡哥思路来吧:别单独对一个孩子判断其左右,这样顾此失彼会反复作用,很麻烦,咱们从左来一次,满足条件,保持相对舒服后从右来一次,不就都满足了吗(不改变左边过来的顺序)?如果所有数组都遍历过了,那么现在都是正数,我们重新排序,对着最小的一个正整数薅羊毛,这样k次不断反转,就算是有一个负数,也是减去最小的一个数得到最大的和。

2023-10-26 21:50:30 36

原创 代码随想录算法训练营第三十二天|122. 买卖股票的最佳时机 II、55. 跳跃游戏、45. 跳跃游戏II

我们可以讨论一下,假设第二天价格比第一天高,我们就算此为利润,若价格低,我们就不算。这样的话就算是连续三天是涨的,我们也可以把每一天的利润加进去,但是如果哪一天是跌的,我们就不会算入该利润。一个个遍历呗,先把第一个元素作为初始值,从第二个开始遍历,若初始值小于元素直接达不到,否则就把初始值更新一下,更新为最大步数,全部遍历结束说明能到,最后返回正。这一次是求最小跳跃次数,所以要用贪心策略,尽可能每次跳得尽量远,从而达成最优解,因此可以考虑dp数组。LeetCode 45. 跳跃游戏II。

2023-10-26 00:03:38 64

原创 代码随想录算法训练营第三十一天|455. 分发饼干、376. 摆动序列、53. 最大字数组和

题目的目标是安排饼干给孩子吃,尽可能满足更多的孩子,也就是大胃口的孩子给他吃满足的尺寸就够了,吃更大的饼干还是满足的,但是胃口更大的孩子就没饼干吃了,所以思路应该是用尽量小的饼干,尽可能先满足胃口小的孩子。因此,本题属于贪心策略的题,我们首先应当对两个数组进行排序。题目要求严格的进行差值的正负数交替,注意特殊点:如果只有一个元素,算一个;如果两个元素,如果不等,算俩,等就算一个。注意题目要求的是最大和的连续子数组,连续,返回其最大和,所以我们只要用变量记录一下最大和即可。

2023-10-25 22:52:07 47

原创 代码随想录算法训练营第二十八天|491. 递增子序列、46. 全排列、47. 全排列 II

这一次是包含重复数字的,因此上一题的代码就不能用了,比如对于[1,1,2]这个nums数组,如果要上题代码会得到排列:[2,1,1](nums下标为2,1,0)与[2,1,1](nums下标为2,0,1),虽然下标不同但是得到的数组相同,因此容易想到的就是同样对于下标也记录一下。由于可能有重复元素,我们对于每一层的判断,要先确定该元素没出现过,再判断是否当前元素大于等于path中的最后一位元素的值,满足的话就开始递归,最后返回。LeetCode 47. 全排列 II。LeetCode 46. 全排列。

2023-10-20 11:36:17 48

原创 代码随想录算法训练营第二十七天|93. 复原IP地址、78. 子集、90. 子集 II

回溯算法中典型的对于每一位“选”与“不选”,若不选就直接调用进入下一层,如果选就将当前数加入path中,调用入下一层,并且要pop一下去除影响。第二种思路,反正都是乱序的,那我们先对nums数组进行排序,这样相同的数就会排在一起了,当当前数与前一个数相同时,直接跳过,这样就以较小的开销代价规避掉了重复元素再进入path中引发的额外判断。给的第一种思路就是在最后判断条件时,使用Counter函数对于每一个res中的子集进行判断,看其是否字母分布频次相等于即将要加入的path数组,但是这样开销就会比较大了;

2023-10-19 13:02:32 68

原创 代码随想录算法训练营第二十六天|39. 组合总和、40. 组合总和 II、131. 分割回文串

同一个数字可以无限制的重复被选取,因此可以不断地进行选取,但是要注意要求组合不同,因此写个判断函数可以判断一下新得到的组合是否已经出现在res中了。与之前题目思路是相同的,只不过判断条件变为了从下标0一直到长度n结束,把中间所有的回文字符串均加入path中,最后把所有的res给return。在第二段代码中,每次添加删除的就不是for循环遍历的candidates元素,而是通过下标元素来固定之前选取过的元素不会再被使用。与上一题不同的是:同一个数字不能被重复选取。LeetCode 40. 组合总和 II。

2023-10-18 10:07:15 53

原创 代码随想录算法训练营第二十五天|216. 组合总和 III、17. 电话号码的字母组合

重点是如何将每个数字按键与字母所对应起来,其实可以发现,键盘的数字和单个位置的数字相同,因此我们可以考虑用一个数组来存储键盘的字母,用其下标来表示号码的数字,在每一次遍历的时候,使用for循环遍历数组该位置的所有字母,并且添加至path中进行下一轮递归。这道题的要求返回的组合不能有相同的,那么我们递归的每一次过程中,用一个for循环来遍历所有满足条件的放入临时数组path中,判断条件是:如果加数的个数正确了,和也等于目标数,就把当前内容添加一份至res。剩余加的数小了可以递归,否则break进入下一轮。

2023-10-17 23:47:15 82

原创 代码随想录算法训练营第二十四天|77. 组合

从今天开始,正式进入回溯部分,其实是和前面的二叉树紧密联系的,二叉树涉及到递归,有递必有归,回溯其实就是归。1. 选与不选:除去边界条件,对于每一个元素,选了再递归,然后再把选的剔除掉,再不选的进行下一个数的递归。对于数都选,以遍历的形式实现。LeetCode 77. 组合。

2023-10-16 10:38:25 55

原创 代码随想录算法训练营第二十一天|235. 二叉搜索树的最近公共祖先、701. 二叉搜索树中的插入操作、450. 删除二叉搜索树中的节点

不管怎样都都插入变为叶子节点,所以终止条件就是当前节点为空时,建立一个节点并返回;否则小了就递归root.left,大了就递归root.right。最后return root。因为是二叉搜索树,都是有大小的,所以左小右大就返回,左右都小向左走,左右都打向右走。LeetCode 235. 二叉搜索树的最近公共祖先。LeetCode 701. 二叉搜索树中的插入操作。LeetCode 450. 删除二叉搜索树中的节点。

2023-10-15 22:51:41 42

原创 代码随想录算法训练营第二十天|530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先

朴素的想法:使用一个hashmap来存出现的元素及其频次,然后对hashmap进行排序,取一个最大的输入res中,遍历一下hashmap,如果有频次与第一个相同的,则也是满足结果要求的众数,我们也要把其键值也就是该数放入res中。一开始我以为两个点要有父子关系,也就是相连,所以做错了。正确的做法是初始化一个res来存最小的差值,然后递归来计算。LeetCode 530. 二叉搜索树的最小绝对差。LeetCode 236. 二叉树的最近公共祖先。LeetCode 501. 二叉搜索树中的众数。

2023-10-15 00:05:24 57

原创 代码随想录算法训练营第十九天|654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树中的搜索

递归来实现,传入的参数有nums,以及每次开始的范围(左,右),并在该范围内选择最大值创建一个node,然后在把最大值的下标的左右边分开继续递归实现。递归来实现,传入的参数有nums,以及每次开始的范围(左,右),并在该范围内选择最大值创建一个node,然后在把最大值的下标的左右边分开继续递归实现。LeetCode 617. 合并二叉树。LeetCode 654 最大二叉树。

2023-10-14 16:45:12 46 1

原创 代码随想录算法训练营第十八天|513. 找树左下角的值、112. 路径总和I、113. 路径总和 II、105. 从前序和中序遍历序列构造二叉、106. 从中序与后序遍历序列构造二叉树

递归三部曲,每次递归时候都要减一下node.val。在上一题的基础上,使用一个stack来保存满足条件的结果。效率不高的做法是用层序遍历,剩下最后一层来return 最左边的元素,但是其实还是递归法更好。递归三部曲,每次递归时候都要减一下node.val。我发现真没必要这样做,迭代法进行了太多无用计算了。LeetCode 113. 路径综合 II。LeetCode 513. 找树左下角的值。LeetCode 112. 路径综合。

2023-10-10 14:27:18 39 1

原创 代码随想录算法训练营第十七天|110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和

这道题好像觉得用栈来模拟挺好做的,可以用元组来存一下1.node点 2.当前的一个str串。其实除去层序遍历,最好不要使用迭代法,否则会比较复杂难以处理。本题目就考虑使用递归法。不用层序遍历,注意是左叶子节点之和,不是最左边的节点。LeetCode 257. 二叉树的所有路径。LeetCode 110. 平衡二叉树。每一个子树的高度都是从底部向上来数的。LeetCode 404. 左叶子之和。

2023-10-09 15:34:56 83 1

原创 代码随想录算法训练营第十五天| 104. 二叉树的最大深度、559. N叉树的最大深度、111. 二叉树的最小深度、222. 完全二叉树的节点个数

又来了,这种N叉树的右兄弟节点是children。感觉这道题因为没有接子节点,所以递归法不好使了,用迭代法来处理。LeetCode 104. 二叉树的最大深度。这道题昨天不是做过了吗?迭代递归都做一次吧。LeetCode 559. N叉树的最大深度。

2023-10-06 22:52:39 43 1

原创 代码随想录算法训练营第十四天| 102. 二叉树的层次遍历、226. 反转二叉树、 101. 对称二叉树&&十道题

同样的,我们要用stack来实现,注意这次就不是把整个array添加进去了,而是每个元素加进去之后再加入一个'#'。同样的,我们先看下迭代法,然后再用简单的递归法来实现。用java来实现的时候要注意,deque的append居然是offer,pop居然是poll。同样的,我们要用stack来实现,判断条件就是题目中提到的使用null(None)来确定。java就add到deque的左边。同样的,我们要用stack来实现,记录一下每一层最大的值。如果说用迭代法,可以算出来的,就是看res中有多少个数。

2023-10-05 23:40:16 57

原创 代码随想录算法训练营第十二天| 239. 滑动窗口最大值、347.前K个高频元素

求频率最大的前k个数,如果不考虑使用hashmap的话,就是用优先级队列,考虑使用最小堆来实现。我们要保证每次窗口最左边的值一定是当前最大的,这样popleft出去就是最大的值了。一个难点判断窗口是不是满了,就是看队列的最左边是不是i-k。LeetCode 239. 滑动窗口最大值。LeetCode 347.前K个高频元素。加油,一定要搞懂这个思路。

2023-10-05 22:39:27 50

原创 代码随想录算法训练营第十三天| 144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历

对于二叉树,其前中后遍历均可采用递归遍历与迭代遍历,递归很好理解,函数规定以列表的形式返回节点的值,所以我们规定边界条件,即无节点时返回[],随后讨论左孩子情况与右孩子情况。对于树来说,只要是用迭代法就要想着使用stack来存每一层的节点了。同前序遍历,只不过是前中的进入位置要进行修改。LeetCode 144. 二叉树的前序遍历。LeetCode 145. 二叉树的后序遍历。LeetCode 94. 二叉树的中序遍历。注意判断一下操作符,讨论一下各种情况,

2023-10-05 16:03:34 54

空空如也

空空如也

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

TA关注的人

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