LeetCode Hot100 236.二叉树的最近公共祖先

题目

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

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

方法(灵神):

代码

java 复制代码
class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if (root == null || root == p || root == q)
            return root;
        TreeNode left = lowestCommonAncestor(root.left, p, q);
        TreeNode right = lowestCommonAncestor(root.right, p, q);
        if (left != null && right != null)
            return root;
        return left != null ? left : right;
    }
}
相关推荐
TL滕22 分钟前
从0开始学算法——第十八天(分治算法)
笔记·学习·算法
LYFlied31 分钟前
【每日算法】LeetCode 84. 柱状图中最大的矩形
前端·算法·leetcode·面试·职场和发展
CoderCodingNo1 小时前
【GESP】C++三级真题 luogu-B4414 [GESP202509 三级] 日历制作
开发语言·c++·算法
Liangwei Lin1 小时前
洛谷 P1955 [NOI2015] 程序自动分析
算法
zwjapple1 小时前
全栈开发面试高频算法题
算法·面试·职场和发展
不穿格子的程序员1 小时前
从零开始写算法——链表篇5:K个一组翻转链表 + 排序链表
算法·链表·分治
青鸟2181 小时前
从资深开发到脱产管理的心态转变
后端·算法·程序员
晨曦夜月1 小时前
笔试强训day7
开发语言·c++·算法
iAkuya2 小时前
(leetcode)力扣100 14合并区间(差分/排序)
算法·leetcode·职场和发展
leiming62 小时前
C++ 02 函数模板案例
开发语言·c++·算法