二叉搜索树的最近公共子节点

ComfyUI整合包V8中文版最新版介绍 和普通AI绘图网页不同,它把图像生成的每一个步骤拆分成一个个"节点",用连线把它们串起来,形成工作流。里面包含ComfyUI内核、Python运行环境、常用插件、部分预置模型,还有一个叫"绘世启动器"的图形界面管理工具。网上的对比数据显示,WebUI最低需要4G显存,ComfyUI最低3G显存就能运行。可以在里面管理插件、切换模型路径、设置显存模式、查看日志报错,还有"疑难解答"功能,遇到报错可以先扫描一下看是不是已知问题。原版ComfyUI的界面是英文的,右键菜单、节点名称全是英文。 阅读详情

二叉搜索树的最近公共子节点

题目

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]

img

示例 1:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出: 6 
解释: 节点 2 和节点 8 的最近公共祖先是 6。
示例 2:

输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
输出: 2
解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。

我的解法一

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        //其实就是判断他们在哪一可子树的下面
        int target1=p->val;
        int target2=q->val;
        cout<<target1<<target2;
        while(root!=NULL)
        {
        if(root->val==target1) return p;
        if(root->val==target2) return q;
        if(isvaild(root->left,target1,target2)&&isvaild(root->right,target1,target2)) return root;
        if(isvaild(root->left,target1,target2)) 
        {
            root=root->left;
            continue;
        }
        if(isvaild(root->right,target1,target2)) root=root->right;
        }
        return NULL;
        
        
    }
    //函数判断树中是否函数目标值
    bool isvaild(TreeNode* root,int target1,int target2)
    {
        if(root==NULL) return false;
        if(root->val==target1||root->val==target2) return true;
        return isvaild(root->left,target1,target2)||isvaild(root->right,target1,target2);
    }
};

上面的解法解法复杂了,更简单的是

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        //终止条件
        if(!root) return NULL;    
        if(root==p||root==q) return root;


        TreeNode* left=lowestCommonAncestor(root->left,p,q);
        TreeNode *right=lowestCommonAncestor(root->right,p,q);

        if(left&&right) return root;
        if(!left&&right) return right;
        if(left&&!right) return left;
        return NULL;
    }
};

不过两种解法效率差不多;

【YOLOv8科研级优化】基于YOLOv9的GELAN模块重构C2f结构,实现精度与效率的同步提升 打开确保模型解析器能识别GELANBlock模块。通过将YOLOv9的GELAN模块集成到YOLOv8的C2f模块中,我们实现了一个“强特征表达+高效计算”的目标检测模型。这个改进不仅在工程上能提升复杂场景下的检测效果,更在科研上提供了“多分支特征融合”的创新思路——这种思路可以延伸到其他检测网络(如Faster R-CNN、SSD)的改进中,帮你在论文中打造独特的研究点。 阅读详情

相关推荐

【python3.7】解决报错 error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++

解决pip安装py7zr遇到的报错问题。

水w的博客 3941

最近公共祖先问题四种常见解法

最近公共祖先问题 LCA定义 LCA指树中两个节点最近的一个公共祖先节点。 利用LCA可以求出树上任意两点之间的距离,假设树上所有节点到根节点的距离都存在dist数组里,则两个节点之间的距离为:dist[u]+dist[v]-2*dist[lca] dist[0] = 0; dist[1] = dist[2] = 1; dist[3] = dist[4] = dist[5] = dist[6] = 2; dist[7] = dist[8] = dist[9] = 3; 加入求解节点7和节点4之间的距离,

ZhuTT的博客 4322

Isaacgym使用操作指南

Isaac Gym 是一个强大的仿真工具,特别适合那些需要进行大规模并行仿真和训练的机器人和强化学习任务。通过 GPU 加速、深度学习集成和丰富的物理仿真能力,Isaac Gym 能够显著提高仿真和训练效率,是机器人学和 AI 研究中的一大利器。

Tony Wey的博客 1万+

二叉树的最近公共节点祖先

当把节点的左子树的节点传进来寻找n的时候,如果遍历完了还没找到就返回false,其次没遍历完时,就进行判断,首先遍历左子树的左边节点,其次遍历左子树的右边节点。所以可以先将q去这个节点的左子树进行寻找,如果左子树不存在,那么一定是在这个节点的右子树,p节点也是如此去寻找。当传递一个根节点进去的时候,我们需要去判断,q和p是在左子树,还是右子树。如果q是在这个节点的左右子树中,p则在与q相反的节点中时,说明这个节点便是最近的相交节点。1.如果遇上这个节点的左节点是p或q,右节点是q或q,就可以返回这个节点。

qq1925723027的博客 293

华大HC32F460 TCP Client 实验

华大HC32F460 TCP Client 实验

ZhuoWuKeJi的博客 649

AUTOSAR R20-11标准下载!

这是公众号的第2篇推文,粉丝数49 Document Search Classic Platform Adaptive Platform Foundation 文档截图 以为会在明天的发布会之后才上线,没想到官网现在就悄悄放出来了。 中国由于网络问题,下载速度比较慢或者会中断。 “阅读原文”提供多种下载方式,可以在线浏览,可以集中下载也可单个文档下载。 如有增减我也会及时在公众号里通知大家,不过我觉得不会变动了。 整理不宜,好东西要分...

Adaptive_AUTOSAR的博客 1891

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

题目:求二叉树中两个节点的最近公共祖先节点 一、该二叉树为搜索二叉树 搜索二叉树的特点: 任意一个节点的左子树的所有节点值都比该节点的值小,其右子树的所有节点值都比该节点的值大。 解决该问题方法: 从树的根节点开始和两个节点作比较,如果当前节点的值比两个节点的值都大,则这两个节点的最近公共祖先节点一定在该节点的左子树中,则下一步遍历当前节点的左子树; 如果当前节点的值比两个节点的值都小

dream 5万+

数字设计实验:RISC-V指令单周期CPU

本文旨在介绍RISC-V指令单周期CPU的设计思路和仿真实现(含代码)

2401_83740084的博客 2713

笔试题29——寻找两个节点的最近公共父节点,并以该父节点为根,求其子树的节点个数

题目描述: 给定二叉树和两个顶点,编写一个程序,找到最近的共同祖先,并计算由最近的共同祖先生根的子树的大小。 在每个测试用例中,第一行包含四个整数,V(树中的顶点数,顶点数从3到10000),E(边数)和两个顶点的索引。 E边数在第二行。每个边由两个顶点表示; 父顶点的索引始终位于子节点的索引之前。 例如,连接顶点5和8的边缘由“5 8”表示,而不是由“8 5”表示。没有给出边缘的顺序。 输入中的...

修呀的博客 3058

一文带你了解什么是RDMA

RDMA(Remote Direct Memory Access,远程直接内存访问)是一种起源于高性能计算领域的通信技术,如今已广泛应用于数据中心。该技术使得用户程序能够绕过操作系统内核及CPU,直接与网络接口卡(NIC)交互,实现网络通信。这种方式不仅大幅提升了通信带宽,还显著降低了网络延迟,优化了整体性能。

嵌入式技术开发 6016

凝聚态物理新引擎:AI 驱动材料预测与相变识别大突破

摘要:本文深入探讨 AI 在凝聚态物理中的创新应用。在材料性质预测方面,AI 借助数据收集、特征提取和模型训练,能依据材料微观信息准确预估其宏观性质,以石墨烯为例验证了高效性。对于拓扑相变识别,AI 通过分析量子力学数据,利用机器学习算法判别相变节点,助力拓扑绝缘体研究。尽管面临数据质量、模型可解释性等挑战,但未来多模态数据融合、可解释 AI 等发展方向,将推动 AI 与凝聚态物理深度融合,助力探索物质奥秘与新材料研发。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1828

二叉树的最近公共父节点

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

点滴文字,记录成长 4729

信息安全管理与评估赛题解析-单机取证(含环境)

链接:https://pan.baidu.com/s/1OMzIq884dW2vAiUp0k2Ppg。链接:https://pan.baidu.com/s/1i5daMqhD53wYeQ6hYzRK6Q。链接:https://pan.baidu.com/s/1QFAjdQZK4sJ-gGRP42XPKA。链接:https://pan.baidu.com/s/1BSXvqN2ZGCQXewgFULoeyQ。链接:https://pan.baidu.com/s/1g9zu5ngBz_KMjW1eBMkJAw。

Brucye 1834

二叉搜索树的最近公共祖先

二叉搜索树的最近公共祖先,关键点在于理解搜索二叉树的结构特点。

Betterc5的博客 430

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

leetcode235.二叉搜索树的最近公共祖先

题目 示例 思路 这道题可以用和236题一样的方法,递归。 但是这里是二叉搜索树,其左子节点<根节点<右子节点。 因此有三种情况 p.val<root.val&&q.val<root.val 此时,p,q均位于root的左子树,root = root.left,继续遍历root的左子树 p.val>root.val&&q.val>root.val 此时,p,q均位于root的右子树,root = root.right,继续遍历root

yinianxx的博客 80

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

每日一题:LeetCode之二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] 示例 1: 输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8 输出: 6 解释: 节点 2 和

qq_40053995的博客 173

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

day20 力扣235. 二叉搜索树的最近公共祖先 力扣701.二叉搜索树中的插入操作 力扣450.删除二叉搜索树中的节点

如果p,q俩节点的值均小于当前节点的值,则q,p在此节点的左子树上,就需要判断左孩子是否为空。我们可以得知,如果一个节点的值小于当前节点的值,且另一个节点的值大于当前节点的值,则,此节点就是最近公共祖先。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]他已说有多种解法,那我们就可以用最简单的,把所有的val加在叶子节点上,就不需要改变二叉树结构了。如果p,q俩节点的值均大于当前节点的值,则q,p在此节点的右子树上,就需要判断右孩子是否为空。

2401_87983916的博客 746

树-二叉搜索树的最近公共祖先(leetcode 235)

二叉搜索树的最近公共祖先 思路: 二叉搜索树,对于二叉搜索树中的每一个节点,其左子节点的值小于当前节点的值,右子节点的值大于当前节点的值。 递归寻找相应节点。 如果两个节点不分布在以一个节点为根的同一侧,则此节点为祖先。 那么我们可以在两个节点在同一侧时,根据二叉搜索树的特性进行缩小树的范围。 答案: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;

yy1348046572的博客 200

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

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

点滴在心 3415

代码随想录 Day 20 | 【第六章 二叉树part07】235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

相对于 二叉树的最近公共祖先 本题就简单一些了,因为 可以利用二叉搜索树的特性。

loveJava17的博客 1180

代码随想录Day19 | 235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

之间的节点一定就是最近公共祖先。因为这样说明p在该节点的左子树,q在该节点的右子树,那么无论再往左遍历还是往右遍历,一定会错过p和q中的一个,只有当前节点才能连接p和q。如果当前层是要删除的节点,分五种情况去处理,最后会返回删除后的一棵子树,中心思想:在二叉搜索树中插入任何一个节点,都可以在叶子节点找到位置。重点理解:从上往下遍历,遇到的第一个节点值在。,成为上一层的左子树或者右子树。

m0_73617263的博客 374

20.代码随想录算法训练营第二十天|235. 二叉搜索树的最近公共祖先,701. 二叉搜索树中的插入操作,450. 删除二叉搜索树中的节点

力扣算法

LXY999222的博客 1091

代码随想录算法训练营第二十天| 235二叉搜索树的最近公共祖先、701二叉搜索树中的插入操作、450删除二叉搜索树中的节点

二叉树part07

m0_57352861的博客 353

代码随想录算法训练营Day22|LC235 二叉搜索树的最近公共祖先&LC701 二叉搜索树的插入操作&LC450 删除二叉搜索树中的节点

一句话总结:删除二叉搜索树中的节点怪复杂的。

qq_62428331的博客 327

代码随想录算法训练营第二十天| 235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

};*/public:// 备份原树,避免下面while循环结束找不到要返回的树// 记录新val所在子树 的 上一层节点,即父节点while(cur!if(cur->val > val) // 如果当前节点val > 新val,新val要插入到左子树else if(cur->val < val) // 如果当前节点val < 新val,新val要插入到右子树。

qq_39882553的博客 728

代码随想录算法训练营第二十二天 | 235. 二叉搜索树的最近公共祖先 & 701.二叉搜索树中的插入操作 & 450.删除二叉搜索树中的节点

有序的,可以根据值判断pq在哪一边pq要么在左右子树中一边 搜索其中一边即可要么就是 pq中的一个在根节点,另一个在其中一颗子树,返回根节点即可。

weixin_50815909的博客 111
上一篇: ubuntu16.04 安装pytorch
下一篇: 如何在Anaconda的python和系统自带的python之间切换
黑猫爱小鹿
博客等级 码龄8年 1万+粉丝 205原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值