二叉树 + BFS
这一组题的共同基础是:把树或网格看成由节点和边组成的结构,再选择合适的遍历顺序。
先判断用 BFS 还是 DFS
BFS 层序遍历模板
levelSize 必须在处理本层之前固定下来,否则新加入的下一层节点也会被当成本层处理。使用 head 指针代替 queue.shift(),可以避免数组反复移动元素。
二叉树 DFS 三种遍历
二叉树 DFS 的区别主要在于“什么时候访问当前节点”。
前序遍历
前序遍历的特点是“先看自己,再看孩子”。如果题目要求从根节点开始构造、记录或传递状态,通常可以优先考虑前序。
中序遍历
中序遍历在普通二叉树中只是固定的访问顺序;在二叉搜索树中更重要,因为访问结果天然按从小到大排列。
后序遍历
后序遍历的特点是“先处理左右子树,再处理当前节点”。如果当前节点的答案依赖左右子树的返回值,通常就是后序 DFS,例如判断平衡二叉树、计算二叉树直径、寻找最近公共祖先。
网格 BFS 模板
网格搜索要在节点入队时标记已访问。如果出队时才标记,同一格可能被多个相邻格重复加入队列。

