🌲 二叉树
树的递归、DFS/BFS、BST 性质利用,是面试中最高频的数据结构之一。
15 题 · 简单 ×6 中等 ×8 困难 ×1
| # | 题目 | 难度 |
|---|---|---|
| 94 | 二叉树的中序遍历 | 简单 |
| 104 | 二叉树的最大深度 | 简单 |
| 226 | 翻转二叉树 | 简单 |
| 101 | 对称二叉树 | 简单 |
| 543 | 二叉树的直径 | 简单 |
| 108 | 将有序数组转换为二叉搜索树 | 简单 |
| 102 | 二叉树的层序遍历 | 中等 |
| 98 | 验证二叉搜索树 | 中等 |
| 230 | 二叉搜索树中第 K 小的元素 | 中等 |
| 199 | 二叉树的右视图 | 中等 |
| 114 | 二叉树展开为链表 | 中等 |
| 105 | 从前序与中序遍历序列构造二叉树 | 中等 |
| 437 | 路径总和 III | 中等 |
| 236 | 二叉树的最近公共祖先 | 中等 |
| 124 | 二叉树中的最大路径和 | 困难 |
核心思路
- 层序遍历:BFS,队列每次处理一整层(循环前记录队列大小)。
- 验证 BST:中序遍历应严格递增;或递归传入
(min, max)约束范围。 - 路径总和 III:前缀和 + 哈希表(类似「和为 K 的子数组」的树上版本)。
- 最近公共祖先:若 p、q 分别在左右子树则当前节点即 LCA;否则向包含两者的子树递归。
- 构造二叉树:前序第一个是根,在中序中找根位置分割左右子树,递归建树(哈希表加速查找)。
- 最大路径和:后序遍历,每个节点计算「经过该节点的最大贡献值」(可向上传递),维护全局最大。
- 展开为链表:Morris 遍历思路:将左子树的最右节点接到右子树头,再把左子树移到右边,迭代处理。