二叉树的公共祖先(递归)
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; //只在左节点或者右节点找到一个,说明还有一个节点是在当前节点的下面
}
};
二叉树的公共祖先(递归)相关推荐
- leetcode 236. 二叉树的最近公共祖先 递归解法 c语言
如题: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先.百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x, 满足 x 是 p.q ...
- [剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]
[问题描述][中等] 235/68-1 搜索二叉树 236/68-2 二叉树 [解答思路] 递归 时间复杂度:O(N) 空间复杂度:O(N) 情况 1. , 2. , 3. , 4. 的展开写法如下. ...
- 二叉树的公共祖先问题
二刷随想录的时候发现,二叉树的公共祖先问题有一个点很巧妙,在这里记录下来,也作为之后复习用的笔记. 记录内容就以随想录的两道题为主. 1.二叉树的最近公共祖先 对应题目236. 二叉树的最近公共祖先 ...
- 二叉树的最近公共祖先——递归/深度优先搜索
一.题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p.q,最近公共祖先表示为一个节点 x,满足 x 是 p.q ...
- 剑指offer面试题68 - II. 二叉树的最近公共祖先(递归)
题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q ...
- LeetCode 236. 二叉树的最近公共祖先(递归)
题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q ...
- 二叉树最近公共祖先节点
寻找最近公共祖先节点(LCA) 在一棵二叉树中,对于节点X和节点Y,X和Y的LCA是这棵树中X和Y的第一个共同祖先.寻找公共节点的算法思路很简单:对于节点x和y,找到树的根节点分别到x节点和y节点的路 ...
- 二叉树最近公共祖先相关题目(Leetcode题解-Python语言)
236. 二叉树的最近公共祖先 class Solution:def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'T ...
- [剑指offer]面试题第[68-1]题[Leedcode][JAVA][第235题][二叉搜索树的最近公共祖先][递归][BFS]
[问题描述][第235题][二叉搜索树的最近公共祖先][简单] 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先.百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p. ...
最新文章
- php批量导出pdf文件大小,php完美导出pdf,pdf合并批量导出
- 计算机科学与技术的知识要求,0812计算机科学与技术基本要求.doc
- 对话框的MFC,一点回车就退出
- Android service 小研究
- (221)FPGA芯片结构组成
- 零基础转行Linux云计算运维工程师获得20万年薪的超级学习技巧
- Js利用Div自定义提示框弹窗+定时器
- java解压缩和shell_shell 文件的归档和压缩
- python最适合做什么-学习Python适合就业哪些岗位?老男孩Python学习
- C#获取当前路径的七种方法
- JSP教程第9讲笔记
- ImportError: cannot import name 'imresize'
- 如何降低论文查重率?
- MATLAB 图像滤波器
- Jsp四种变量作用范围
- swift实现python中的spicy.signal.find_peaks
- C - Matrix Reducing
- Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(二)
- 管理定律-管人用人育人留人之道
- 谁告诉你 Flutter 会干掉原生开发?