二叉树中两个节点的最近公共父节点

摩尔线程GPU实战:5分钟搞定AI模型部署(含Docker避坑指南) 本文详细介绍了摩尔线程GPU在AI模型部署中的实战应用,包括环境配置、Docker避坑指南及性能优化技巧。通过5分钟快速部署指南,帮助开发者高效利用摩尔线程GPU进行AI模型推理,特别针对常见兼容性问题提供解决方案,显著提升部署效率。 阅读详情
这个问题可以分为三种情况来考虑:
情况一:root未知,但是每个节点都有parent指针
此时可以分别从两个节点开始,沿着parent指针走向根节点,得到两个链表,然后求两个链表的第一个公共节点,这个方法很简单,不需要详细解释的。

情况二:节点只有左、右指针,没有parent指针,root已知
思路:有两种情况,一是要找的这两个节点(a, b),在要遍历的节点(root)的两侧,那么这个节点就是这两个节点的最近公共父节点;
二是两个节点在同一侧,则 root->left 或者 root->right 为 NULL,另一边返回a或者b。那么另一边返回的就是他们的最小公共父节点。
递归有两个出口,一是没有找到a或者b,则返回NULL;二是只要碰到a或者b,就立刻返回。

  1. // 二叉树结点的描述    
  2. typedef struct BiTNode    
  3. {    
  4.     char data;    
  5.     struct BiTNode *lchild, *rchild;      // 左右孩子    
  6. }BinaryTreeNode;   
  7.   
  8. // 节点只有左指针、右指针,没有parent指针,root已知  
  9. BinaryTreeNode* findLowestCommonAncestor(BinaryTreeNode* root , BinaryTreeNode* a , BinaryTreeNode* b)  
  10. {  
  11.     if(root == NULL)  
  12.         return NULL;  
  13.     if(root == a || root == b)  
  14.         return root;  
  15.     BinaryTreeNode* left = findLowestCommonAncestor(root->lchild , a , b);  
  16.     BinaryTreeNode* right = findLowestCommonAncestor(root->rchild , a , b);  
  17.     if(left && right)  
  18.         return root;  
  19.     return left ? left : right;  
  20. }  

情况三: 二叉树是个二叉查找树,且root和两个节点的值(a, b)已知
  1. // 二叉树是个二叉查找树,且root和两个节点的值(a, b)已知  
  2. BinaryTreeNode* findLowestCommonAncestor(BinaryTreeNode* root , BinaryTreeNode* a , BinaryTreeNode* b)  
  3. {  
  4.     char min  , max;  
  5.     if(a->data < b->data)  
  6.         min = a->data , max = b->data;  
  7.     else  
  8.         min = b->data , max = a->data;  
  9.     while(root)  
  10.     {  
  11.         if(root->data >= min && root->data <= max)  
  12.             return root;  
  13.         else if(root->data < min && root->data < max)  
  14.             root = root->rchild;  
  15.         else  
  16.             root = root->lchild;  
  17.     }  
  18.     return NULL;  
  19. }  

wflow模型hbv 毛管水的处理 😄 快速流的处理 K4是为了产生基流的 找到了令人激动的kenematic模块 😄 阅读详情

相关推荐

VBA中如何使用Edge内核Browser?

在微软宣布停止对IE的支持后,许多使用VBA中Web Browser的用户遇到了困境,因为Web Browser使用的IE内核。然而微软并没有给出支持Edge的新版Web Browser,网上许多第三方的库也不够完善。经过调研,libEdge可以较好的和VBA集成,实现在Excel中打开Browser,甚至能够通过执行js代码,获取web页面的信息。项目需要WebView2Loader.dll和LibEdge.dll两个库,区分x86和x64版本。

金木AI 2396

[转载]程序员面试100题之十六:二叉树中两个节点的最近公共父节点

本文转载自 http://blog.youkuaiyun.com/hackbuteer1/article/details/8022138   这个问题可以分为三种情况来考虑:情况一:root未知,但是每个节点都有parent指针此时可以分别从两个节点开始,沿着parent指针走向根节点,得到两个链表,然后求两个链表的第一个公共节点,这个方法很简单,不需要详细解释的。情况二:节点只有左、右指针,没有par...

shayeo的博客 649

golang 线上事故

golang 线上事故 最近公司要做大促的一些活动。并且单量,qps持续上涨。之前使用的是django python 语言做的一个服务端。目前已经部署的国家里面最多的国家会有300+个实例。大促期间还可能会增加一个实例数。这么多的实例部署,回滚的时间都会特变长,除了问题也不好定位。并且如此多的一个机器,连接数* 实例数也会导致DB等其他服务扛不住这么大的并发。所以决定上go服务解决性能问题。 ...

lcf枫的博客 1537

二叉树的最近公共父节点

Java寻找二叉树的最近公共父节点问题思路代码 问题 给定一棵二叉树和两个节点,找出这两个节点最近的一个公共父节点。 给出的两个节点一定在树中存在; 结点的值是随机的,可能会重复,结点中只包含left和right两个子结点,没有指向父节点的parent。 此题可参考LeetCode 236。 思路 考虑两个结点的存在情况: 一个节点为是另外一个节点的子或孙子节点,此时只要判断root节点等于...

wangls56的博客 6605

Openai gym environment for multi-agent games

用于多智能体游戏的 OpenAI Gym 环境

suiusoar 1193

优化dalsa相机检测界面

上节实现了使用qt结合dalsa相机显示检测到缺陷的画面,由于窗口过于简陋,本节将进行一个界面优化。

A1983Z的博客 985

二叉树

题目描述      1       / \    2   3    / \ / \  4 5 6 7  /\ /\ /\ /\如上图所示,由正整数 1, 2, 3, ...组成了一棵无限大的二叉树。从某一个结点到根结点(编号是1的结点)都有一条唯一的路径,比如从5到根结点的路径是(5, 2, 1),从4到根结点的路径是(4, 2, 1),从根结点1到根结点的路径上只包含一个结点1,因此路径就是(1...

sunshine_lyn的博客 536

世界职业院校技能大赛商贸赛道项目参考逐字稿一

商贸赛道“智选优品”—基于大数据与AI驱动的跨境电商平台项目参考逐字稿您订阅本专栏后即可`永久享有所有文章的查阅权`,希望我们更新的参考资料能帮助到您。如果您需要我们团队赋能培训可联系我(企业一线工程师及国一获奖选手在线培训支持:每周直播精讲(可回放,支持弹幕答疑)、代码Review+技术售后(拉群随时问,12h内响应)、④路演PPT+答辩话术一对一点评,评委视角提前彩排、适合:中职/高职赛项选手、指导老师带队、校企工作室、整校打包另谈(可开发票))

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 1580

程序员面试100题之五:二叉树两个结点的最低共同父结点

题目:二叉树的结点定义如下: struct TreeNode { int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight; }; 输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。 分析:求数中两个结点的最低共同结点是面试中经常出现的一个问题。这个问题至少有两个变种。 第一变种是二叉树是一种特殊的二叉树:查...

yuanlanjun 315

Orange3实战教程:文本挖掘---标注语料库地图

Oreange3,文本挖掘,标注语料库地图用于在二维投影中可视化、聚类文档,并用关键词进行标注。

err2008的专栏 817

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

数据结构算法题/二叉树中两个节点的最近公共父节点

这个问题可以分为三种情况来考虑: 情况一:root未知,但是每个节点都有parent指针 此时可以分别从两个节点开始,沿着parent指针走向根节点,得到两个链表,然后求两个链表的第一个公共节点,这个方法很简单,不需要详细解释的。 情况二:节点只有左、右指针,没有parent指针,root已知 思路:有两种情况,一是要找的这两个节点(a, b),在要遍历的节点(root)的两侧,那么这个节点就是...

fkyyly的专栏 1130

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

求二叉树两个节点的最近公共父节点

题目 求二叉树两个节点的最近公共父节点 思路 递归,边界条件为空节点或两个节点的其中一个 如果node的左节点是a,b的公共父节点,则在其右子树中尝试查询a,b最后结果必然是NULL,反之亦然。 所以当node的左右节点查询结果都不为空的时候,说明该点就是最近公共父节点。 代码 TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, Tre...

qq_28609735的博客 1029

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

找二叉树中两个节点的最近的公共父节点

找二叉树中两个节点的最近的公共父节点 很流行的一个问题,常见于各种面试中,http://fayaa.com/tiku/view/16/ 这里有一个很好的汇总. 找寻二叉树中两个节点的公共父节点中最近的那个节点  情况1. 节点只有left/right,没有parent指针,root已知 情况2. root未知,但是每个节点都有parent指针 情况3. 二叉树是个二叉查找树,

alane1986的专栏 3469

程序员面试100题之十六:二叉树中两个节点的最近公共父节点

这个问题可以分为三种情况来考虑: 情况一:root未知,但是每个节点都有parent指针 此时可以分别从两个节点开始,沿着parent指针走向根节点,得到两个链表,然后求两个链表的第一个公共节点,这个方法很简单,不需要详细解释的。 情况二:节点只有左、右指针,没有parent指针,root已知 思路:有两种情况,一是要找的这两个节点(a, b),在要遍历的节点(root)的两侧,那么这

Hackbuteer1的专栏 2万+

二叉树--最近公共父节点

给定二叉树中的任意两点,求解该两点的最近公共父节点。程序大致分为递归和非递归两种方式,下面我们先来认识非递归的方式。非递归程序总体的思路:用一种常见高效的数据结构来记录下二叉树中的结构关系,由于是找父节点,所以要用子节点来查找父节点,我们这里用到的是HashMap来进行树形关系的存储。接下来就是先列出一个要求节点的所有父节点,然后比较另一个要求节点的父节点在不在上面的列中,第一个出现的节点,就是我们

节至 8586

二叉树最近公共父节点

找二叉树的最近公共父结点。有父结点指针时,容易找。没有父结点指针时,一种算法时间复杂度为O(N^2),一种算法时间复杂度为O(N)。

KangRoger的专栏 9859

求一个二叉树中两个节点的最近公共父节点

对树的考察在于使用递归方法(使用递归的方式) package suanfa; /**求一个二叉树中两个节点的最近公共父节点 */ public class LowestCommonAncestor { public static void main(String[] args) { // TODO Auto-generated method stub // TreeNode root ...

fct2001140269的博客 456

二叉树相关操作(遍历、路径、最近公共父节点、重构)

本文总结了二叉树的相关操作,并在最后附上所有操作的实现。还有不足之处,以后会及时更新~   相关操作包括: 1、插入:InsertBTree 2、遍历 1)前序遍历(递归):PreOrderTraverse 2)前序遍历(非递归):PreOrderTraverse

tangbo1987的专栏 1822

找寻二叉树中两个节点的公共父节点中最近的那个节点的三种情况

 找寻二叉树中两个节点的公共父节点中最近的那个节点     10                                         /   /                                        6    14                                      /  /    /  /

wangyangkobe的专栏 2988

二叉树中两个节点的最近的公共父节点

二叉树中两个节点的最近的公共父节点

helloworld的专栏 1426

找寻二叉树中两个节点的公共父节点中最近的那个节点

http://fayaa.com/tiku/view/16/

chjjunking的专栏 600
上一篇: KVC/KVO原理详解及编程指南
下一篇: Ubuntu重装mysql
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值