- 理解二叉树的遍历
- 从栈的“消除”到单调栈
- 回溯与剪枝: 《明日边缘》or 《源代码》
- Flood fill 算法小专题
- 二分搜索(待填坑)
- 排序: 经典排序算法的**随处可见
- 与 Top-K 相关的问题
- 双指针与滑动窗口
- Trie 的原理、实现及其应用
- 线段树的构建、查询与更新
方法 | 注意点 | 能够解决的问题 |
---|---|---|
前序遍历 | 将根节点的信息传递至左右子树 | 验证 BST: 98. Validate Binary Search Tree 判断两棵树是否完全相同: 100. Same Tree 判断是否为子树: 572. Subtree of Another Tree 根节点到叶子节点的路径问题: 113. Path Sum II 所有二叉树的构造问题都是前序遍历: 108. Convert Sorted Array to Binary Search Tree |
中序遍历 | BST 的中序遍历结果有序 | 验证 BST: 98. Validate Binary Search Tree BST 中第 K 小/大的元素: 230. Kth Smallest Element in a BST |
后序遍历 | 将左右子树的信息传回给根节点 | 二叉树的最大高度: 104. Maximum Depth of Binary Tree 二叉树的最小高度: 111. Minimum Depth of Binary Tree 翻转二叉树: 226. Invert Binary Tree 翻转二叉树为链表: 114. Flatten Binary Tree to Linked List 最近公共祖先问题: 236. Lowest Common Ancestor of a Binary Tree DP + BinaryTree: 337. House Robber III |
层序遍历 | 使用 queue 保存每一层的节点 BFS 用于求解无权图最短路径 |
寻找二叉树每一行的最大节点值: 515. Find Largest Value in Each Tree Row 二叉树的右视图: 199. Binary Tree Right Side View 多叉树最短路径问题: 310. Minimum Height Trees 二叉树中所有距离为 K 的节点: 863. All Nodes Distance K in Binary Tree |