真⋅手把手带你刷通 100 道二叉树题目
学算法认准 labuladong
后台回复 进群 进刷题群
在 学习数据结构和算法的框架思维 中我特地强调了二叉树的重要性,有不少读者说刷完了二叉树分类题目之后,对递归的掌握更上一层楼了,发现那些动态规划、回溯算法、图论算法本质上其实和二叉树是类似的。
当然,其实更多的读者反馈是:知道这玩意儿重要,但是刷起来依然比较困难,不得要领。
所以我在想如何真正手把手带读者刷二叉树分类的题目,而且最关键的目标是要领悟递归算法的思维模式,对高级算法也能做到举一反三。
一篇文章当然无法手把手带你刷完所有二叉树题目,一百多道呢,就算我写了,你也不一定能一次看完。
但这不是有了刷题插件了嘛,所以继上次更新了 top 100 的题目思路之后,这几天我在 刷题插件 中加入了 100 多道二叉树题目思路和解法,涵盖了二叉树分类下几乎所有非会员题目:
安装插件后点开二叉树题目分类就可以看到。
而且,我不是仅仅是给一个解法代码,而是会给按照前文 二叉树技巧总结篇 的解题框架给出简明扼要的解题思路。
不要小看解题框架哦,这就是我一直强调的框架思维,所有题目都归类成相同的套路,按照统一的思考步骤来解决。
不是说我的思路就是最好的,但对于那些对算法比较懵逼的读者,统一化和套路化是最有效的。
如果你去看五花八门的解法,各种思路不统一,很难形成一套可复用的方法论,轮到自己做题又不会了,所谓「听君一席话,如听一席话」。
你基于我的这套统一的万能框架,先做到无鸭梨解决二叉树题目,再基于自己的理解发明解题的奇技淫巧,随你,这完全没有冲突。
接下来简要说下我的二叉树解题思路的特点。
首先,按照前文 二叉树技巧总结篇 所说,所有二叉树题目都被分为「遍历」和「分解问题」两种思路:
对于一些可以使用多种思路的题目,我会同时提供所有思路的解法代码:
对于一些需要前置知识的题目,我都给你安排好了:
对于一些可以使用 DFS(递归)遍历也可以使用 BFS(层序)遍历的题目,我也会同时提供两种思路的解法代码:
更多的我就不介绍了,大家自行探索吧。用很多读者的话说,我这波属于是把饭送到嘴边了,还搞不定算法的话真是不应该了。
后续我也会借助刷题插件继续开发「手把手刷 XXX」系列,比如动态规划这类题目,以后肯定会有的,等我在公众号发通知即可。
最后,还没安装插件的读者可以看 刷题插件安装使用手册 安装使用。