1,方法一,求出根节点到目标节点的路径,然后两条路径找到最近公共祖先

2,方法二,递归的去找两个节点,找到后,返回root,后序遍历的思想:

class Solution {

public:
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
    if (!root) 
        return NULL;//如果当前节点为NULL说明走到了叶节点都没有找到两个节点中的其中一个
    if (root == p || root == q) 
        return root;//如果当前节点为p,q之中的一个,那么返回当前找到的节点中的一个
    TreeNode *L = lowestCommonAncestor(root->left, p, q);//左子树中是否能最先找到p,q中的一个节点
    TreeNode *R = lowestCommonAncestor(root->right, p, q);
    if (L && R) 
        return root;  //如果当前节点左右节点都各找到一个,那么返回当前节点
    return L ? L : R; //只在左节点或者右节点找到一个,说明还有一个节点是在当前节点的下面
    }
};

二叉树的公共祖先(递归)相关推荐

  1. leetcode 236. 二叉树的最近公共祖先 递归解法 c语言

    如题: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先.百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x, 满足 x 是 p.q ...

  2. [剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]

    [问题描述][中等] 235/68-1 搜索二叉树 236/68-2 二叉树 [解答思路] 递归 时间复杂度:O(N) 空间复杂度:O(N) 情况 1. , 2. , 3. , 4. 的展开写法如下. ...

  3. 二叉树的公共祖先问题

    二刷随想录的时候发现,二叉树的公共祖先问题有一个点很巧妙,在这里记录下来,也作为之后复习用的笔记. 记录内容就以随想录的两道题为主. 1.二叉树的最近公共祖先 对应题目236. 二叉树的最近公共祖先 ...

  4. 二叉树的最近公共祖先——递归/深度优先搜索

    一.题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p.q,最近公共祖先表示为一个节点 x,满足 x 是 p.q ...

  5. 剑指offer面试题68 - II. 二叉树的最近公共祖先(递归)

    题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q ...

  6. LeetCode 236. 二叉树的最近公共祖先(递归)

    题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q ...

  7. 二叉树最近公共祖先节点

    寻找最近公共祖先节点(LCA) 在一棵二叉树中,对于节点X和节点Y,X和Y的LCA是这棵树中X和Y的第一个共同祖先.寻找公共节点的算法思路很简单:对于节点x和y,找到树的根节点分别到x节点和y节点的路 ...

  8. 二叉树最近公共祖先相关题目(Leetcode题解-Python语言)

    236. 二叉树的最近公共祖先 class Solution:def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'T ...

  9. [剑指offer]面试题第[68-1]题[Leedcode][JAVA][第235题][二叉搜索树的最近公共祖先][递归][BFS]

    [问题描述][第235题][二叉搜索树的最近公共祖先][简单] 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先.百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p. ...

最新文章

  1. php批量导出pdf文件大小,php完美导出pdf,pdf合并批量导出
  2. 计算机科学与技术的知识要求,0812计算机科学与技术基本要求.doc
  3. 对话框的MFC,一点回车就退出
  4. Android service 小研究
  5. (221)FPGA芯片结构组成
  6. 零基础转行Linux云计算运维工程师获得20万年薪的超级学习技巧
  7. Js利用Div自定义提示框弹窗+定时器
  8. java解压缩和shell_shell 文件的归档和压缩
  9. python最适合做什么-学习Python适合就业哪些岗位?老男孩Python学习
  10. C#获取当前路径的七种方法
  11. JSP教程第9讲笔记
  12. ImportError: cannot import name 'imresize'
  13. 如何降低论文查重率?
  14. MATLAB 图像滤波器
  15. Jsp四种变量作用范围
  16. swift实现python中的spicy.signal.find_peaks
  17. C - Matrix Reducing
  18. Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(二)
  19. 管理定律-管人用人育人留人之道
  20. 谁告诉你 Flutter 会干掉原生开发?

热门文章

  1. 一不小心节约了 591 台机器!
  2. 发年终奖了,送台MacBook Air!
  3. 有了这份程序员面试指南,你离大厂Offer还远吗?| 附推荐书籍
  4. 使用spring jdbc的batchUpdate功能提高性能
  5. v$sql、v$sqlarea 、v$sqltext
  6. HDR高动态压缩【MATLAB代码】
  7. 指令重排序所带来的问题及使用volatile关键字解决问题
  8. Datatables参数详解
  9. 盘点中兴通讯强悍的战斗力
  10. #淘宝#复制分享宝贝内容,打开淘宝APP,自己主动弹出宝贝提示信息