← 返回算法与AI总览 算法与AI · 知识点深化 · 二叉树进阶:层序、BST、最近公共祖先、路径和
算法与AI · 知识点深化 · 算法思想

二叉树进阶:层序、BST、最近公共祖先、路径和

二叉树第一轮学了遍历,第二轮要解决具体问题:层序遍历分层、BST 验证、最近公共祖先、路径和、平衡判断。这些题都是遍历 + 后序处理的变体。这一页把高频题型套路化。

① 怎么学(4 步走,约 70 分钟)

先建立直觉再抠细节,按这四步走最稳:

1看图建立直觉(10 分钟)
读②③:先在脑子里画出本课核心结构图。
2记完整体系(15 分钟)
读④:把对比表和公式看懂,不要急着背。
3跟例题走一遍(20 分钟)
精读⑤:看三个例题怎么用知识点解题。
4刷题纠错(剩余时间)
做⑦⑩,错题回⑥诊断。
本课小目标学完你要能:① 写层序分层;② 验证 BST;③ 求 LCA;④ 路径和。

② 一图看懂:二叉树进阶题型

二叉树 层序 BFS 队列分层 BST 中序升序 LCA 后序递归 路径和 DFS 累计 应用:树/搜索 LeetCode 高频 易错:递归返回值没想清 定义好函数语义
读法:中心是本课主题,四条分支展开核心维度,下方是典型应用与高频易错点。

③ 本质直觉:二叉树题就是"定义好递归函数"

二叉树题的秘诀:想清楚这个递归函数是干什么的,别试图一步想全树。

层序:队列,每层记录 size 一次性处理。

BST:中序遍历是升序,验证它就行。

LCA:函数定义:返回以 root 为根的树里 p/q 的最近公共祖先。左找、右找,都找到就是 root。

3 5 1 LCA(5,1)=3:左右都找到,root 就是答案
递归思维遇到树题先问:函数 f(root) 返回什么?假设左子树已经算好,怎么和 root/右组合?

④ 完整知识体系

高频题型套路

题型套路时间
层序分层队列+每层 sizeO(n)
BST 验证中序遍历看升序O(n)
LCA后序左右找O(n)
路径和DFS 累计减O(n)
平衡判断后序算高度差O(n)
LCAif(!root||root==p||root==q) return root; l=dfs(left); r=dfs(right); return l&&r?root:l||r
层序while(q){ size=q.size(); 循环 size 次出队 }

BST 验证为什么要传上下界

只比较 root 和左右孩子不够,要保证左子树所有节点 < root < 右子树所有节点。传 min/max 递归。

⑤ 应用场景与例题

例1 LCA 题
root=3, p=5, q=1
在 3 的左右子树分别找到 5 和 1,说明 3 是 LCA。
例2 验证 BST
[5,1,4,null,null,3,6]
根 5,右孩子 4 比 5 小,不是 BST。
例3 路径和
root 到叶子和等于 targetSum
DFS 每步 target-=root.val,到叶子看 target==0。
做题心法先定义函数返回值,再递归左右,最后组装。

⑥ 高频错误诊断(4 条)

错误1:BST 只比较孩子要传上下界,保证整棵子树。
错误2:层序没分层每层记录 size。
错误3:LCA 思路混乱函数返回找到的节点,都找到就是 root。
错误4:路径和没判断叶子到叶子节点才判断和。

⑦ 考点真题演练(5 题)

考点分布

考法出题形式应对
层序问怎么分层每层 size
BST问验证方法中序升序/上下界
LCA问思路后序左右找
平衡问怎么判断后序算高度

真题basic1. 层序遍历分层用什么数据结构?

真题mid2. 验证 BST 为什么要传上下界?

真题mid3. LCA 算法中,如果左右都找到节点,说明?

真题hard4. 平衡二叉树判断?

真题hard5. 路径和问题什么时候判断 target?

⑧ 必背知识点卡

层序:队列+每层 size
BST:中序升序,验证传上下界
LCA:左右都找到返回 root
路径和:DFS 累计,叶子判断
平衡:后序算高度差<=1
递归:先定义函数语义
时间:每个节点访问一次 O(n)

⑨ 动手输出:写 LCA

场景:求二叉树两节点最近公共祖先。
① 边界:root 空或等于 p/q,返回 root。
② 递归:左子树找,右子树找。
③ 判断:左右都不为空,root 是 LCA。
④ 否则:返回非空的那个。
⑤ 时间:O(n)。
口述思路函数返回找到的节点,都找到就是 root。

⑩ 分层练习(基础 + 中档 + 拔高)

▍基础 6 题

基础1层序用什么?
队列。
基础2怎么分层?
每层记录 size。
基础3BST 中序遍历是什么?
升序。
基础4LCA 中文?
最近公共祖先。
基础5路径和在哪判断?
叶子节点。
基础6平衡树条件?
左右高度差<=1。

▍中档 5 题

中档1为什么 BST 只比较孩子不够?
可能孙子越界,要上下界。
中档2LCA 递归函数语义?
返回 root 树里 p/q 的 LCA。
中档3层序每层 size 作用?
知道这层出队几个。
中档4怎么求树高度?
1+max(左,右)。
中档5怎么翻转二叉树?
交换左右孩子递归。

▍拔高 5 题

拔高1路径 II 求所有路径?
DFS 记录 path,到叶子收集。
拔高2二叉树最大路径和?
后序,经过 root 的最大贡献。
拔高3序列化/反序列化?
前序遍历带 null。
拔高4BST 第 k 小?
中序遍历计数。
拔高5完全二叉树节点数?
利用左右高度,满树直接算。

⑪ 记忆口诀 + 7 天复习计划

三句口诀① 层序队列 size 分层,BST 中序看升序。② LCA 后序左右找,路径和 DFS 到叶子。③ 递归先想函数语义,每个节点 O(n)。
天任务自检
第 1 天读②③,写层序分层代码对
第 2 天背题型表 + 基础 6 题套路记住
第 3 天做中档 5 题,写 LCA逻辑对
第 4 天做拔高 5 题,写路径和边界对
第 5 天做⑦真题 5 题限时每题 5 分钟
第 6-7 天合书白板写 LCA不看资料

← 返回算法与AI总览