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

本文讨论了递归算法的难点,如理解终止条件和处理逻辑,提倡使用迭代法(层序遍历)代替。重点提到在113题中,终止条件不再是单一标准,而是总和达到目标。作者强调理论知识转化为实际代码的重要性,以及避免大脑模拟和优化调试的实践技巧。

513:

思路解析:代码随想录

总结:递归有点难理解终止条件和单层处理逻辑中的回溯,所以先用迭代法(层序遍历)实现容易很多:找最后一层的从左到右第一个节点。

112,113

思路解析:代码随想录

总结:也是用回溯。113是112的完善题目,其实用113的方法也可以解决112.113中定义了两个全部变量,其实这两个全局变量可以作为参数递归传进去(参考查找整棵树的路径)。难点在于理解终止条件和处理逻辑:终止条件不再是cur为null的时候,或者叶子节点的时候,而是总和为sum的时候。查找整棵树的路径这个题目的终止条件是为cur为null的时候,或者到达叶子节点的时候。另外,到达终止条件的时候,是直接返回的时候,那么返回什么值呢?答案是整棵树的遍历,不返回,部分遍历,返回参数或者将结果加入到result中。处理逻辑上,就是左右子树的处理,处理的时候需要把当前节点的值先处理掉,然后再去递归。递归完了,别忘记回溯,一一对应。

106,105

思路解析:代码随想录

总结:理论知道,就是没法很有逻辑和条理分明的表达出来(这是我的弱点)。以 后序数组的最后一个元素为切割点,先切中序数组,根据中序数组,反过来再切后序数组。一层一层切下去,每次后序数组最后一个元素就是节点元素。后序数组的切割也是难点:此时有一个很重的点,就是中序数组大小一定是和后序数组的大小相同的(这是必然)。

1、思路其实比较简单,但是真正代码实现出来并不容易。所以要避免眼高手低,踏实地把代码写出来。

2、优化和调试

3、打日志

切记:不要大脑模拟,那样越想越糊涂!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值