力扣-236.二叉树的最近公共祖先

题目描述

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

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

cpp 复制代码
class Solution {
public:
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        if(!root||root==p||root==q)
            return root;
        TreeNode* left = lowestCommonAncestor(root->left,p,q);
        TreeNode* right = lowestCommonAncestor(root->right,p,q);
        if(left&&right)
            return root;
        if(left)
            return left;
        return right;
    }
};

小结:题目看起来简单,实则非常不好理解,后序遍历保证顺序,找到之后向上返回,这题直接记住算了,写不下去了,无语。

相关推荐
吃着火锅x唱着歌1 分钟前
LeetCode 503.下一个更大元素II
算法·leetcode·职场和发展
_深海凉_5 分钟前
LeetCode热题100-将有序数组转换为二叉搜索树
数据结构·算法·leetcode
KaMeidebaby14 分钟前
卡梅德生物技术快报|单克隆抗体人源化 PEG 修饰质控方法体系构建与验证
服务器·前端·数据库·人工智能·算法·百度·新浪微博
不知名的老吴29 分钟前
二叉树的遍历算法之先序遍历
算法
liu****31 分钟前
第16届国赛蓝桥杯大赛C/C++大学B组
c语言·数据结构·c++·算法·蓝桥杯
SimpleLearingAI1 小时前
大模型推理框架总结解析
算法
Σίσυφος19001 小时前
正则化数据并校准数据
人工智能·算法·机器学习
HZ·湘怡1 小时前
基于动态数组的栈(顺序栈)01
数据结构·算法
Chen_harmony1 小时前
十八、C语言内存函数
c语言·算法
__Coffee__1 小时前
封装矩阵结构体
线性代数·算法·矩阵