找到最深叶节点的最近公共祖先 —— 二叉树算法详解
题目描述
给你一棵有根节点 root
的二叉树,找出所有最深叶节点的最近公共祖先(Lowest Common Ancestor of Deepest Leaves)。
- 叶节点:二叉树中没有子节点的节点。
- 深度定义:根节点的深度为 0,任一节点的子节点深度为父节点深度 + 1。
- 最近公共祖先 (LCA):对于一组节点
S
,LCA 是满足以下条件的节点A
:
-
A
是所有S
中节点的祖先;A
的深度尽可能大(即最接近叶节点的公共祖先)。
题目目标:返回最深叶节点的最近公共祖先。
解题分析
题目本质是找到“最深的叶子节点集合”,然后求这些节点的最近公共祖先。
思路拆解:
- 确定最深叶节点的深度
我们要知道树中叶节点的最大深度。 - 找到对应的叶节点集合
所有深度达到最大深度的叶子节点。 - 求这些节点的最近公共祖先