给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。

最近公共祖先是两个节点的公共的祖先节点且具有最大深度。
样例
对于下面这棵二叉树
4
/ \
3 7
/ \
5 6
LCA(3, 5) = 4

LCA(5, 6) = 7

LCA(6, 7) = 7

class Solution {
public:/*** @param root: The root of the binary search tree.* @param A and B: two nodes in a Binary.* @return: Return the least common ancestor(LCA) of the two nodes.*/TreeNode *lowestCommonAncestor(TreeNode *root, TreeNode *A, TreeNode *B) {// write your code herevector<TreeNode*> APath;  vector<TreeNode*> BPath;  vector<TreeNode*> cur;  dfs(cur,root,A,B,APath,BPath);  TreeNode* ret = root;  for(int i=0;i<min(APath.size(),BPath.size());i++)  {  if(APath[i]==BPath[i])  {  ret = APath[i];  }  else  break;  }  return ret;  }  /*深度搜索,找到两条路径*/
void dfs(vector<TreeNode*> cur,TreeNode*root,TreeNode *A, TreeNode *B,vector<TreeNode*> &APath,vector<TreeNode*> &BPath)  {  if(root==NULL) return;cur.push_back(root);  if(root==A)  APath = cur;  if(root==B)  BPath = cur;  if(root->left)  dfs(cur,root->left,A,B,APath,BPath);  if(root->right)  dfs(cur,root->right,A,B,APath,BPath);  }
};

lintcode-最近公共祖先相关推荐

  1. 有一个1亿结点的树,已知两个结点, 求它们的最低公共祖先!

    对该问题,分为如下几种情形讨论: 情形一: 假如该树为二叉树,并且是二叉搜索树, 依据二叉搜索树是排过序的, 我们只需要从树的根结点开始,逐级往下,和两个输入的结点进行比较. 如果当前结点的值比两个结 ...

  2. 二叉树:最近的公共祖先 Lowest Common Ancestor of a Binary Tree

    已知二叉树,求二叉树中给定的两个节点的最近公共祖先. 最近公共祖先: 两节点v与w的最近公共祖先u,满足在树上最低(离根最 远),且v,w两个节点都是u的子孙. 如上二叉树,6和8号节点的公共祖先有4 ...

  3. Tarjan算法应用 (割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)问题)...

    转载自:http://hi.baidu.com/lydrainbowcat/blog/item/2194090a96bbed2db1351de8.html 基本概念: 1.割点:若删掉某点后,原连通图 ...

  4. LeetCode实战:二叉树的最近公共祖先

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...

  5. LeetCode实战:二叉搜索树的最近公共祖先

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...

  6. 0x63.图论 - 树的直径与最近公共祖先

    目录 一.树的直径(Diameter) 1.树形DP求树的直径 2.两次BFS/DFS求树的直径 1.POJ 1985.Cow Marathon(DFS求树的直径模板题) 2.AcWing 350. ...

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

    文章目录 解法1:保存祖先节点+逐个判断 解法2:深度优先遍历 解法3:记录祖先节点 https://leetcode-cn.com/problems/lowest-common-ancestor-o ...

  8. python代码实现二叉树中最低的公共祖先

    python代码实现二叉树中最低的公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结 ...

  9. 算法-二叉树的最近公共祖先

    题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 思路:可能的情况有两种,如下图: 贴上代码: public class LowestCommonAncestor {@Testpubli ...

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

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

最新文章

  1. gdb相关(栈和寄存器)
  2. NIO的Buffer
  3. webp app推荐图片格式,更小更快减少oom
  4. Velocity引擎导致jvm内存外内存泄露
  5. 零基础如何学Java?能学会Java吗?
  6. 丢弃法(基于MXNet)
  7. 华为手机文件在内部存储路径_华为手机查找文件路径 华为文件夹在哪里
  8. matlab eiq函数,Matlab学习笔记(9)——textread函数
  9. 自适应网页(响应式布局)+弹性布局
  10. 快递100商家下单demo
  11. 短学期微机接口课程设计
  12. 【超详细】FL Studio 21新版更新全解析!80项更新与改进!
  13. kettle资源库备份
  14. ORACLE审计管理
  15. SAP中评估变式中“外协加工物料的间接费用”
  16. 【经济学】MIT 微观经济学 Microeconomoics
  17. ServletContext对象
  18. Python程控泰克示波器(4)
  19. 采购IT外包服务的企业有哪些痛点?
  20. php 微信模板消息url,【求助】php 微信公众号 发送模板消息改变不了颜色

热门文章

  1. Android 高清加载长图或大图方案
  2. 如何用手机打印文件?手机中存储的文档怎么打印
  3. speedoffice(PPT)怎么添加下划线
  4. python爬虫 煎蛋网妹子图 动态爬虫1
  5. 适用各大电商平台的商品主图设计模板!
  6. 计算机毕业设计ssm基于协同过滤的图书馆图书推荐系统9xpkg系统+程序+源码+lw+远程部署
  7. 赶吃花的牛 USACO
  8. 操作系统 实验报告 linux 内核,linux操作系统内核实验报告.doc
  9. 湖北大学知行学院怎么考计算机,2021年湖北大学知行学院开学时间入学考试及新生转专业相关流程说明...
  10. 你现在无法访问 blog.csdn.net,因为网站使用的是 hsts。网络错误和攻击通常是暂时