自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Day 66 || Floyd 算法、A * 算法

建立grid[i][j][k] = m,表示 节点i 到 节点j 以[1...k] 集合为中间节点的最短距离为m,更新方法是grid[i][j][k] = min(grid[i][k][k - 1] + grid[k][j][k - 1], grid[i][j][k - 1])。还有一个二维数组的定义具体详见“曼哈顿距离、欧氏距离(欧拉距离)、切比雪夫距离可选巨额提根据情况自主选择,也就是距离终点和其实点最近的点会有优先级,调到下一个点下一个点可跳范围继续进入优先级队列依次类推。

2024-11-16 02:01:41 264

原创 Day 65 || SPFA、判断负权回路、bellman_ford之单源有限最短路

,主要的思想是在Bellman_ford算法中因为要每条边都要松弛(判断是否可以松弛),但是改进队列优化使用了邻接表先查询到当前点邻接的是什么点然后放入队列遍历松弛,节省遍历所有路径判断是否可以松弛这个步骤,节省时间。Bellman_ford原始方法不断松弛即使n次以上minDist也不会变化,因为路径已经是最小的了,但是负权回路会使得minDist不停变小。k个城市就是松弛k+1次,讲解了录入路径的顺序对之后的遍历也会有影响所以不能完全相信k+1次松弛,所以每次松弛需要保存上一次松弛的结果进行对比。

2024-11-16 00:07:54 349

原创 Day 64 || dijkstra(堆优化版)、Bellman_ford 算法

,最大的优势就是可以计算边的权值是有负数的情况,它最关键操作是“松弛”,“minDist[B] = min(minDist[A] + value, minDist[B])”就是松弛,与之前不同的是之前判断更新当前点到起始点长度是根据visited列表来判断,但是Bellman_ford直接根据不要被更新的前一个点的状态(minDist[edge.from]!= Integer.MAX_VALUE)来判断当前点是否可以更新。Bellman_ford 算法。

2024-11-14 23:20:15 289

原创 Day 63 || 拓扑排序、dijkstra

第一步,选源点到哪个节点近且该节点未被访问过;第二步,该最近节点被标记访问过;第三步,更新非访问节点到源点的距离(即更新minDist数组)。类似于prim算法,但是这个列表中存储的是到源点最近的距离,而非节点到最小生成树的最小距离。就是先找到入度为0的点,记录,然后找到该点出度指向的点,对该点的入度减一,如果为0入栈不为0的话继续,直至栈为空。查看结果数量和输入的点数量是否一致,不一致返回-1。

2024-11-12 23:41:14 259

原创 Day 62 || prim算法、kruskal算法

基本思路就是维护一个数组,此数组记录每个点的最短边。第一步,选距离生成树最近节点;第二步,最近节点加入生成树;第三步,更新非生成树节点到生成树的距离(即更新minDist数组)。并查集,查询是否在一个集中不在就添加即可。基本思路就是先所有路径升序排列,然后利用。

2024-11-12 17:57:48 210

原创 Day 60 || 108.冗余连接 、109.冗余连接II

的思路,可以理解为加入的这个边,如果边上的二者能找到共同的父节点就证明这个边是多余的,打印出这个边即可。以上两个情况相互独立。(代码来自“代码随想录”)

2024-11-11 18:22:23 235

原创 Day 59 || 并查集理论基础 、寻找存在的路径

并查集理论相关代码即可实现。

2024-11-11 17:09:51 162

原创 Day 58 || 110.字符串接龙 、105.有向图的完全可达性、106.岛屿的周长

深度搜索和广度搜索都可以,先列表存储有向路径,然后新建一个boolean列表存储每个数字是否呗访问过,然后就深度搜索或者广度搜索,只要该数字访问过就可以继续往后搜索了,最后看boolean列表是否有没有访问过的值。广搜是嘴和是的因为可以最快找到目标值之后直接跳出,起始值入栈,然后HashSet记录名称和当前深度1,然后跳出,分别修改其实值每个位置的值找到题目所给的数组里有没有有的话添加这个字符串然后深度原先基础上加一(计算出总的岛屿数量,总的变数为:岛屿数量 * 4,因为有一对相邻两个陆地,边的总数就。

2024-11-11 02:51:51 304

原创 Day 57 || 101.孤岛的总面积 、102.沉没孤岛 、103.水流问题、104.建造最大岛屿

先遍历每个岛屿不同岛屿设定不同编号,然后将大小和编存入map中,之后遍历0 的地方看0和那些临界临界的岛屿编号是多少这样就能计算面积,最后求最大值即可,但是要注意本什么二维数组就可能是一个巨大的岛屿,所以map中的岛屿大小也可以放入进行单独的对比求最大值。和求最大面积差不多,但是问题是怎么判断这个孤岛有依靠边缘然后这个孤岛的面积就不能使用了。先遍历每个边缘上的孤岛屿,岛屿值改为2,然后之后遍历整个矩阵2地方变为1,1地方变为0。也可以先遍历每条边上的岛屿赋值为0,这样靠边的岛屿就不会影响之后的遍历了。

2024-11-11 01:58:18 229

原创 Day 56 || 99.岛屿数量、100.岛屿的最大面积

和之前求岛屿一样,main里设定一个large变量用来存储最大面用max来判断遇到的岛屿和目前已知岛屿大小,广度或者深度搜索中新增变量同时新怎搞一个传参用来传递岛屿的大小,只要遇到一个1当前岛屿面积增大1。遍历整个二维数组当找到岛屿后,标记这个岛屿,岛屿总数量加一然后遍历这个点位的上下左右有没有1,然后递归这些1并标记,直到都是0为止,然后继续遍历二维数组跳已经遍历的熬的岛屿。类似遍历二维数组,只不过是遇到1之后标记这个点,然后表用方法这个方法是使用搞一个队列来讲这个一周围的1都标记好变成一个小岛。

2024-11-09 02:46:57 302

原创 Day 55 || 图相关理论、深度优先搜索、广度优先搜索

以下内容均来自“整体上一般分为 有向图 和 无向图。无向图中有几条边连接该节点,该节点就有几度。从该节点出发的边的个数。指向该节点边的个数。在无向图中,任何两个节点都是可以到达的,我们称之为连通图。在有向图中,任何两个节点是可以相互到达的,我们称之为 强连通图。在无向图中的极大连通子图称之为该图的一个连通分量。在有向图中极大强连通子图称之为该图的强连通分量。图一般使用来表示。

2024-11-09 01:13:27 486

原创 Day 53 || 42. 接雨水 、84.柱状图中最大的矩形

42. 接雨水使用单调栈栈由栈顶向栈底递增,这样与之前单调栈相同也就是遇到大于当前栈顶就进行计算pop,核心代码在下方,只计算当前栈顶左右两个高度相对较小一方来计算高度,要减去挡圈栈顶的高度,乘以左右来两侧长度,因为可能有两个高度一样的入栈,不必担心因为这样的话计算面积的高度为零,这样会继续while循环。

2024-11-08 23:37:38 294

原创 Day 52 || 739. 每日温度 、 496.下一个更大元素 I 、503.下一个更大元素II

题目关键是如何将数组循环起来,可以for循环的长度乘以二,然后利用 i%nums.length来取余用来获得当前值,其他的就都相同,结果就是新的数组从零开始取原数组的长度的值。需要使用到单调栈,单调栈记录放入当前值所在数组的位置,只要当前数小于栈顶就放入,要是大于栈顶就弹出当记录的数组危及减去当前for循环的位置。”差不多,可以创建一个HashMap保存nums2的结果,便于nums1在其中快速找到结果。496.下一个更大元素 I。496.下一个更大元素 I。

2024-11-07 22:46:03 364

原创 Day 51 || 647. 回文子串、516.最长回文子序列

这个需要想到如果两个对比位置小于等于一时候只要相等就成立,但是要是大于一时候就需要判断两者之间是否成立,比如i-j大于1,那么i+1到j-1就应该要成立那么i到j才能成立。dp[i][j] = dp[i + 1][j - 1] +2这个好理解就是两者中间长度加上2,否则dp[i][j] = Math.max(dp[i][j - 1],dp[i + 1][j])这个要理解成为分别抛弃左右一个能达到的最长序列。516.最长回文子序列。

2024-11-06 00:52:01 376

原创 Day 50 || 115.不同的子序列 、583. 两个字符串的删除操作 、72. 编辑距离

也就是 dp【i - 1】【j - 1】。还是二维数组,但是dp的计算思路不同于“392.判断子序列”,如果相同dp[i][j] = dp[i-1][j-1] + dp[i-1][j],代表着该点位置是之前i-1、j-1的值也是不选s点也就是i-1、j的值之和。如果不同dp[i][j] = Math.min(dp[i-1][j]+1,Math.min(dp[i][j-1]+1,dp[i-1][j-1]+2))删除两个中的一个或者两个都删除的情况,初始化就是当前字符所在位置变为空要删除几次。

2024-11-05 23:40:07 271

原创 Day 49 || 1143.最长公共子序列、1035.不相交的线、 53. 最大子序和 、392.判断子序列

dp[i][j] = dp[i-1][j-1]+1,不同的话dp[i][j] = dp[i][j-1],这个和最大公共子序列还是有区别的,因为这个s的字符串不能增删。最初的想法是一个类似于双指针和谈心的一个写法while循环最后判断s的指针是否到最后即可。dp[i]代表当前值与当前值与dp[i-1]加上当前值中的最大值,维护一个maxValue用来返回最后的最大值结果。”类似,二维数组,只是增长方式不一样,想通的话就是dp[i-1][j-1]+1,如果不相等就是。718. 最长重复子数组。

2024-11-05 21:01:58 258

原创 Day 48 || 300.最长递增子序列 、674. 最长连续递增序列 718. 最长重复子数组、

首先想到的是双指针,右侧指针不断推进值比较右侧指针和右侧指针前一个数字,要是大于就更新最大长度,否则将左侧指针更新到有侧指针处即可。动态规划的话就比较分for循环中当前i和i-1的大小如果大于就dp[i]=dp[i-1]即可最后排序拿到最大值。”这个即可,dp代表着nums[i]之前的最长子序列大小,从0遍历到i-1即可获得nums[i]的最长子序列,dp需要初始化为1,因为每个单独的数字都可以是一个子序列。数组获取最大值,复杂度为 O(n),与双指针方法相当。718. 最长重复子数组。

2024-11-05 13:58:44 275

原创 Day 46 || 188.买卖股票的最佳时机IV 、309.最佳买卖股票时机含冷冻期 、714.买卖股票的最佳时机含手续费

需要设定4个状态分别是持有、卖出后等待、卖出、冷却,需要分别明确每个状态从哪个状态更新到下一天的状态,以及状态的初始化。122.买卖股票的最佳时机II”类似,只要在卖出的时候不仅加上prices然后减去fee就好了。”思路一致,只是进行抽象话,提取相同的代码进行总结成一个for循环即可。123.买卖股票的最佳时机III。309.最佳买卖股票时机含冷冻期。

2024-11-04 21:55:49 148

原创 Day 45 || 121. 买卖股票的最佳时机 、122.买卖股票的最佳时机II 、123.买卖股票的最佳时机III

贪心可以做,是要两天差是正数求和即可。动态规划中就和“121. 买卖股票的最佳时机”一题一样,秩序修改dp[0][i] 更新时候的方法改为Math.max(dp[0][i-1],dp[1][i-1]-prices[i]);因为是可以多次买入,所以累计的收入就应该是dp[1][i-1]了。每天更新dp[0][i]和dp[1][i]。和“121. 买卖股票的最佳时机”类似,dp数组增加两个行即可,分别代表第二次持有和第二次卖出的价格即可,累计的收入就应该是dp[3][prices.length-1]了。

2024-11-04 17:38:25 184

原创 Day 44 || 198.打家劫舍 、 213.打家劫舍II 、337.打家劫舍III

198.打家劫舍dp数组长度是房间数量,dp[i-2]+nums[i]偷当前和dp[i-1]不偷当前即可,但是要初始化0、1两个dp[0]是nums[0],dp[1]是nums[0]、nums[1]大者,以下dp[i] = Math.max(dp[i-2]+nums[i],dp[i-1])套用完成即可。213.打家劫舍II和“198.打家劫舍”相似,只是做两个dp,一个dp不考虑房间的最后一个,一个dp不考虑第一个房间。最后对比两个dp的最后一个值即可。

2024-11-04 16:06:33 286

原创 Day 42 || 322. 零钱兑换、 279.完全平方数、139.单词拆分、多重背包

还是完全背包问题,但是这个是求得最少使用量,那么先背包还是先物品无所谓,重点在初始化上,dp[0]是0,其他都是Integer.MAX_VALUE,更新就是dp[i] = Math.min(dp[i],dp[i-coin]+1),同时更新的时候要判断dp[i-coin]是否为Integer.MAX_VALUE,否则会变成Integer.MIN_VALUE。和“322. 零钱兑换”一样,只是在确定物品的时候先对n开方即可。

2024-11-04 13:26:56 350

原创 Day 42 || 完全背包、518. 零钱兑换 II 、 377. 组合总和 Ⅳ、70. 爬楼梯 (进阶)

因为是可以无限使用相同规格的金币,完全背包和之前一样容量正序即可;但是需要注意的是因为是求可能性的数量所以需要初始化容量为0时候为1。思路和上一题“518. 零钱兑换 II”一样,但是需要注意的是,如果先循环物品再循环背包会造成结果只是组合,只有先背包后物品才是组合。和之前01背包一样,但是物品可以无限放置,所以之前二维数组中的背包容量是倒序遍历的,现在可以正序遍历即可重复放入。518. 零钱兑换 II。377. 组合总和 Ⅳ。377. 组合总和 Ⅳ。

2024-11-04 01:35:27 325

原创 Day 41 || 1049. 最后一块石头的重量 II 、494. 目标和、474.一和零

1049. 最后一块石头的重量 II和“416. 分割等和子集”思路一致,也就其实想知道分开的两个部分最小差距是多少,求石头质量除以二作为背包容量,最后返回值就是总数减去 两倍所装下的质量,即分来的两部分质量的差距。494. 目标和可与看作分割两部分一个全加一个全减,凑全加之和即可,也就是(sum+target)/2,二维数组横向是每个值,纵向是背包大小,这个需要累加每次,dp[0][0]要设定为1。j<num 就 dp[i][j]=dp[i-1][j],否则。

2024-11-03 12:16:56 214

原创 Day 39 || 01背包、416. 分割等和子集

需要建立一个k大小的的dp数组,k代表容量,初始化数组子一列为0,背包倒序计算内部最大价值,即从大容量向小容量计算,因为从小容量向大容两计算的时候 dp[i - 1][j - weight] + value可能重复计算当前物品已经放入过的情况。主要代码:dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weight] + value);背包大小就是整个数组的之和的一半,如果是奇数不成立。然后想象成大小和价值一样,容量就是数组之和的一半即可。

2024-11-02 16:43:15 367

原创 Day 38 || 62.不同路径 、63. 不同路径 II、343.整数拆分、96.不同的二叉搜索树

62.不同路径思路:一个二维dp[m][n],每个值代表到当前位置的路径,需要初始化dp[0][n]和dp[m][0]因为到最左列和第一行都只有一个路径,之后for循环dp[i][j]=dp[i-1][j]+dp[i][j-1]加和左侧和上侧的路径数量即可,最后返回右下的值。63. 不同路径 II思路:和“62.不同路径”,相似,只是再循环第一行和最左列的时候如果遇到obstacleGrid为1时候给0就好,之后也都给0。之后再遍历其他位置的时候遇到obstacleGrid为1时候同样给0即可。

2024-10-21 01:02:15 437

原创 Day37 || 509. 斐波那契数 、70. 爬楼梯、746. 使用最小花费爬楼梯

509. 斐波那契数当前dp就是每个n的对于n-1、n-2的值;递推就是初始化0和1即可,顺序就是哦从前向后即可。70. 爬楼梯递推就是和斐波那契数列一样。

2024-10-20 18:29:46 392

原创 Day35 || 56. 合并区间、738.单调递增的数字、968.监控二叉树

情况1:左右节点都有覆盖,左孩子有覆盖,右孩子有覆盖,那么此时中间节点应该就是无覆盖的状态了。情况2:左右节点至少有一个无覆盖的情况,如果是以下情况,则中间节点(父节点)应该放摄像头。情况3:左右节点至少有一个有摄像头,其实就是 左右孩子节点有一个有摄像头了,那么其父节点就应该是2。三者顺序很重要,否则不符合逻辑了。左侧排序,记录初始值的start和end,然后for循环不停更新end,直到新的start大于end,保存star和end至结果中,更新start和end,for循环下去。

2024-10-16 02:04:31 212

原创 Day35 || 452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间

首先HashMap遍历整个String获取每个字母之后的位置,然后for循环,end 记录切割位置,for循环每次每个字母对比end 值如果大于end就更新,直到i等于end ,这个就是切割点,之后以此类推查结果。当气球出现重叠,一起射,所用弓箭最少。按照气球的中止位置排序,因为气球数量大于一,所以设定至少一个,然后第一个气球重点为last,只要之后气球的起始大于last就要多射一箭,last更新到新的气球终止位置。763.划分字母区间。

2024-10-16 00:29:57 373

原创 Day31 || 122.买卖股票的最佳时机 II、55. 跳跃游戏、 45.跳跃游戏II 、1005.K次取反后最大化的数组和

要计算当前范围能到哪里,另一个就是当前范围跳到的地方下一次最远能到哪里。也就是这里需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖。如果移动下标达到了当前这一步的最大覆盖最远距离了,还没有到终点的话,那么就必须再走一步来增加覆盖范围,直到覆盖范围覆盖了终点。让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。那么如果将负数都转变为正数了,只找数值最小的正整数进行反转。应该从后往前循环判断,只要能在当前位置跳跃到队尾,就可以把队尾更新到当前位置,然后继续循环。

2024-10-15 17:37:26 699

原创 Day33 || 134. 加油站、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列

5\10\20三种情况分别if判断即可,在没有10的时候可以找零3个5。一次是从左到右遍历,只比较右边孩子评分比左边大的情况。一次是从右到左遍历,只比较左边孩子评分比右边大的情况。这样从局部最优推出了全局最优,即:相邻的孩子中,评分高的孩子获得更多的糖果。(“代码随想录”)那么局部最优:当前累加rest[i]的和curSum一旦小于0,起始位置至少要是i+1,因为从i之前开始一定不行。全局最优:找到可以跑一圈的起始位置。先按身高降序排列,同样身高按照ki升序排列,优先按身高高的people的k来插入。

2024-10-15 02:02:31 801

原创 Day31 || 455.分发饼干 、376. 摆动序列、53. 最大子序和

455.分发饼干胃口和饼干排序,设定一个参数统计最后的值,for循环每个小朋友,while直到饼干大于等于当前胃口统计值加一,最后返回统计值。

2024-10-14 02:01:20 317

原创 Day30 || 491.递增子序列 、46.全排列 、47.全排列 II、51. N皇后、332.重新安排行程、37. 解数独

491.递增子序列思路:因为是递增序列所以弹出条件要是长度大于1,因为是递增所以要避免下一个值小于于前一个值,这个要在for中进行判断用continue跳过,还需要考虑[4,7,6,7]这种情况需要在当前层中设定HashSet来避免同一个值出现两次。46.全排列因为数组就不重复也要求不重复,可以设定成员变量HashSet来保证不重复,如果含有就跳过即可,依照顺序进行递归。47.全排列 II这个需要树层裁剪,需要用到boolean used【】来保证相邻两个相同的值不会被重复的使用。

2024-10-14 00:58:21 459

原创 Day29 || 93.复原IP地址 、 78.子集 、90.子集II

相似,回文中的回文检查替换为是否0开头和是否在0-255范围内的检查即可,回溯中需要检查current是否是4个部分且String是否用尽作为退出条件,for循环可以限制执只循环三次。思路:从第一个数组就放入current中,不管怎样都放入最后的结果result中,迭代即可。在递归for循环中添加一个判断即可。要清楚子集问题和组合问题、分割问题的的区别,

2024-10-13 02:00:43 194

原创 Day28 || 39. 组合总和 、40.组合总和II、131.分割回文串

39. 组合总思路:回溯,成员变量result用于保存最后的结果数组,current用于保存不停添加删除的数组来验证总和是否等于target。需要注意的是回溯中的for循环每次开始的点不能小于之前一次回溯for循环的值,否则会重复。

2024-10-12 01:05:59 236

原创 Day 27 || 77. 组合、 216.组合总和III 、17.电话号码的字母组合

将这个数组看成一个二叉树(图“代码随想录”),递归即可。先确定返回值和参数,回溯一般不返回值,参数就是起始值front和n,k;退出条件就是列表长度等于k退出;遍历顺序就是 for(int i = front;i++),减少无效递归次数。建一个列表映射键盘2-9的字母,之后迭代给的digits,迭代内在遍历每个数字对应的3-4个字母即可。和“77. 组合”类似,添加一个成员变量sum做判断即可。216.组合总和III。

2024-10-07 17:10:00 258

原创 Day 26 || 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

思路:最大的困难在理解题目意思,其实可以转变理解为从最大的值逐渐变小遍历每个节点,不停累加赋值到每个节点,直到到最小值。设定一个成员变量,然后右中左递归遍历即可。”类似,但是在遇到超过范围的时候要继续遍历不能单单删除一个节点,比如一个节点小于范围那就右侧子节点继续递归,大于范围类似操作。思路:求得数组中间的值,左侧作为左子树,右侧作为右子树继续递归。538.把二叉搜索树转换为累加树。450.删除二叉搜索树中的节点。

2024-10-07 02:42:52 205

原创 Day 20 || 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作

思路:要删除的节点有几种情况1节点下无子节点、2有左子节点、3有右子节点、4左右子节点都有、5没有找到节点。这些要分情况处理,只有一个子节点简单,只返回这个子节点就好,如果有左右两个子节点,就需要选择一个节点接入另一侧节点,比如左侧节点又要接入右侧子节点中的最左侧节点(右侧同理)。所以递归迭代都可以解决。思路:只要知道新加入的节点是在之前的叶子节点之后加入即可,因为这样判断需要递归的方向和该方向的子节点为空就是要添加的地方。450.删除二叉搜索树中的节点。思路:题目其实可以用“

2024-10-06 20:05:56 369

原创 docker中的postgres安装postgis

首先进入正在运行的容器(这里假设你的容器名称为更新容器中的apt-get。

2024-10-05 17:00:47 537

原创 Day18 || 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先

因为是搜索二叉树,中序遍历加入列表就是一个递增的列表,然后列表前后对比即可。或者设定成员变量min和preNode记录前一个nide值,中序遍历当前中节点与preNode对比即可。直接查看题解,因为是要找公共节点应该是从下往上找,自下而上应该用后续遍历。其实有一种可能需要考虑,是两个需要找的节点是父节点和子节点关系。以下方法很巧妙,参考“代码随想录”和“530.二叉搜索树的最小绝对差”类似,做一个去成员变量list存储最后结果、maxCount最大次数、count当前次数,进行统计即可。

2024-10-05 02:22:51 187

原创 Day17 || 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

有陷阱不能单单检查当前节点的左右是够符合条件还要求与节点之前的节点符合,如图下图就不符合要求。所以要求定义一个成员变量这个成员变量根据中序遍历不停改变值,总而保证符合二叉搜索树的要求。感觉和“105.从前序与中序遍历序列构造二叉树”类似,只是一个数组,入参是数组,返回值是节点,返回条件就是数组长度为1时候建立节点之后返回。迭代传入两个二叉树,返回值是合并的二叉树,中间if判断12都不为空、1空2不空,2空1不空和12都空情况,然后继续迭代即可,用前序遍历。构建二叉树需要前序遍历!98.验证二叉搜索树。

2024-10-03 21:27:27 217

空空如也

空空如也

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

TA关注的人

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