LeetCode hot100-49-N

java 复制代码
236. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。

有一种淡淡的死感,二叉树递归反正是越刷越绝望,完完全全的门外汉背题。

官方答案也看不懂,而且写得一般。

在看到一个好的解答,图画得很好,大概理解每一步是怎么返回了

https://zhuanlan.zhihu.com/p/269251274

但是他是写的C/C++版本,我根据这个思路改成Java。大概是这样的

java 复制代码
class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if (root == null || root == p || root == q) {
            return root;
        }
        root.left = lowestCommonAncestor(root.left, p, q);
        root.right = lowestCommonAncestor(root.right, p, q);
        if (root.left != null && root.right != null) {
            return root;
        }
        return root.left == null ? root.right : root.left;
    }
}
相关推荐
ShiinaMashirol3 小时前
代码随想录打卡|Day27(合并区间、单调递增的数字、监控二叉树)
java·算法
wuqingshun3141595 小时前
蓝桥杯 5. 交换瓶子
数据结构·c++·算法·职场和发展·蓝桥杯
Demons_kirit5 小时前
Leetcode 2845 题解
算法·leetcode·职场和发展
adam_life6 小时前
http://noi.openjudge.cn/——2.5基本算法之搜索——200:Solitaire
算法·宽搜·布局唯一码
我想进大厂6 小时前
图论---朴素Prim(稠密图)
数据结构·c++·算法·图论
我想进大厂6 小时前
图论---Bellman-Ford算法
数据结构·c++·算法·图论
AIGC大时代6 小时前
高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
数据库·人工智能·算法·aigc·智能写作·deepseek
CODE_RabbitV7 小时前
【深度强化学习 DRL 快速实践】近端策略优化 (PPO)
算法
宝耶8 小时前
面试常问问题:Java基础篇
java·面试·职场和发展
Wendy_robot8 小时前
【滑动窗口+哈希表/数组记录】Leetcode 438. 找到字符串中所有字母异位词
c++·算法·leetcode