lintcode-最近公共祖先
给定一棵二叉树,找到两个节点的最近公共父节点(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亿结点的树,已知两个结点, 求它们的最低公共祖先!
对该问题,分为如下几种情形讨论: 情形一: 假如该树为二叉树,并且是二叉搜索树, 依据二叉搜索树是排过序的, 我们只需要从树的根结点开始,逐级往下,和两个输入的结点进行比较. 如果当前结点的值比两个结 ...
- 二叉树:最近的公共祖先 Lowest Common Ancestor of a Binary Tree
已知二叉树,求二叉树中给定的两个节点的最近公共祖先. 最近公共祖先: 两节点v与w的最近公共祖先u,满足在树上最低(离根最 远),且v,w两个节点都是u的子孙. 如上二叉树,6和8号节点的公共祖先有4 ...
- Tarjan算法应用 (割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先)问题)...
转载自:http://hi.baidu.com/lydrainbowcat/blog/item/2194090a96bbed2db1351de8.html 基本概念: 1.割点:若删掉某点后,原连通图 ...
- LeetCode实战:二叉树的最近公共祖先
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...
- LeetCode实战:二叉搜索树的最近公共祖先
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...
- 0x63.图论 - 树的直径与最近公共祖先
目录 一.树的直径(Diameter) 1.树形DP求树的直径 2.两次BFS/DFS求树的直径 1.POJ 1985.Cow Marathon(DFS求树的直径模板题) 2.AcWing 350. ...
- LeetCode 236. 二叉树的最近公共祖先
文章目录 解法1:保存祖先节点+逐个判断 解法2:深度优先遍历 解法3:记录祖先节点 https://leetcode-cn.com/problems/lowest-common-ancestor-o ...
- python代码实现二叉树中最低的公共祖先
python代码实现二叉树中最低的公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结 ...
- 算法-二叉树的最近公共祖先
题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 思路:可能的情况有两种,如下图: 贴上代码: public class LowestCommonAncestor {@Testpubli ...
- 二叉树最近公共祖先节点
寻找最近公共祖先节点(LCA) 在一棵二叉树中,对于节点X和节点Y,X和Y的LCA是这棵树中X和Y的第一个共同祖先.寻找公共节点的算法思路很简单:对于节点x和y,找到树的根节点分别到x节点和y节点的路 ...
最新文章
- gdb相关(栈和寄存器)
- NIO的Buffer
- webp app推荐图片格式,更小更快减少oom
- Velocity引擎导致jvm内存外内存泄露
- 零基础如何学Java?能学会Java吗?
- 丢弃法(基于MXNet)
- 华为手机文件在内部存储路径_华为手机查找文件路径 华为文件夹在哪里
- matlab eiq函数,Matlab学习笔记(9)——textread函数
- 自适应网页(响应式布局)+弹性布局
- 快递100商家下单demo
- 短学期微机接口课程设计
- 【超详细】FL Studio 21新版更新全解析!80项更新与改进!
- kettle资源库备份
- ORACLE审计管理
- SAP中评估变式中“外协加工物料的间接费用”
- 【经济学】MIT 微观经济学 Microeconomoics
- ServletContext对象
- Python程控泰克示波器(4)
- 采购IT外包服务的企业有哪些痛点?
- php 微信模板消息url,【求助】php 微信公众号 发送模板消息改变不了颜色
热门文章
- Android 高清加载长图或大图方案
- 如何用手机打印文件?手机中存储的文档怎么打印
- speedoffice(PPT)怎么添加下划线
- python爬虫 煎蛋网妹子图 动态爬虫1
- 适用各大电商平台的商品主图设计模板!
- 计算机毕业设计ssm基于协同过滤的图书馆图书推荐系统9xpkg系统+程序+源码+lw+远程部署
- 赶吃花的牛 USACO
- 操作系统 实验报告 linux 内核,linux操作系统内核实验报告.doc
- 湖北大学知行学院怎么考计算机,2021年湖北大学知行学院开学时间入学考试及新生转专业相关流程说明...
- 你现在无法访问 blog.csdn.net,因为网站使用的是 hsts。网络错误和攻击通常是暂时