前言
本周主攻二叉树系列算法,集中刷了8道高频经典二叉树题目:中序遍历、最大深度、翻转二叉树、对称二叉树、二叉树直径、层序遍历、有序数组转二叉搜索树、验证二叉搜索树、二叉搜索树第K小元素。刷题过后暴露明显短板:代码写得不熟练,隔段时间复盘时思路卡顿、没法独立写出完整代码,同步穿插了专业课复盘,借着错题梳理整周学习得失。
一、刷题内容汇总
本周聚焦LeetCode二叉树基础+二叉搜索树经典题型,清单如下:
1. 二叉树的中序遍历(递归+迭代两种写法)
2. 二叉树的最大深度(深度优先DFS、广度优先BFS)
3. 翻转二叉树(左右子树交换递归)
4. 对称二叉树(双指针同步比对左右子树)
5. 二叉树的直径(后序遍历求左右深度,更新最长路径)
6. 二叉树的层序遍历(队列实现逐层遍历)
7. 将有序数组转换为二叉搜索树(二分中点做根,递归构建平衡BST)
8. 验证二叉搜索树(中序升序校验/区间限定递归)
9. 二叉搜索树中第K小的元素(中序遍历天然升序,取第k个值)
二、现存问题:刷题误区反思
1. 当场能看懂,复盘写不出
做题时跟着提示、参考思路能完成代码,但隔天复盘独立敲代码就卡壳:
- 递归终止条件模糊,经常忘记 root == null 边界判断;
- 层序遍历容易忘记初始化队列、每层统计节点数量;
- BST相关题型混淆性质,忘记中序遍历有序这个核心特点。
2. 只会单一写法,变通能力差
大部分题目只熟练递归写法,迭代版(栈模拟中序、队列层序)生疏,题目限制不能用递归时就无从下手。
3. 只追求AC,缺少总结
写完题目直接过,没有提炼题型模板:二叉树大部分题目依托前/中/后序、层序四种遍历衍生,没有归纳通用解题框架,导致换个问法就思路混乱。
三、调整方案:后续复习规划
1. 二叉树复盘节奏
1. 每日复盘2道旧题:不看笔记、不搜题,闭眼梳理思路再手写代码,卡住的地方标注错题,第二天优先回看;
2. 分类归纳模板:
- DFS类(深度、对称、翻转、直径):依托前/后序递归框架;
- BFS类(层序遍历):固定队列模板;
- BST类(验证、有序数组建树、第K小):紧扣中序升序特性。
3. 递归、迭代两种写法交替练习,杜绝只会单一解法。
2. 专业课+算法并行学习
本周同步复盘课内专业课,采用「上午复盘课本知识点+下午刷对应算法」的模式:
- 数据结构课本二叉树章节精读,对照课本定义理解代码逻辑,把课本理论落地到代码实现;
- 当天专业课学到的知识点,当晚找1~2道对应算法巩固,打通理论和实操。
四、下周目标
1. 本周9道二叉树题目做到任意抽题,10分钟内独立写出递归+迭代双版本代码;
2. 完成二叉树题型思维导图,区分普通二叉树、二叉搜索树解题区别;
3. 稳步推进专业课复习,算法不再盲目刷题,以“吃透旧题>刷新题”为主。
小结
刷题不是刷数量,吃透才是关键。这周踩了“只刷不复盘”的坑,后续放慢刷题速度,把旧题啃熟,稳步夯实二叉树基础,循序渐进提升代码熟练度。