算法通关村-----寻找祖先问题

最近公共祖先

问题描述

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

问题分析

按照前序遍历的顺序遍历二叉树,对于遍历到的当前节点root,判断其与要寻找公共祖先的两个节点p和q的关系,如果root=p或者root=q则,root是p和q的最近公共祖先,否则,在root的左右子树分别寻找p和q,如果p和q在root的左子树和右子树,则root是p和q的最近公共祖先,如果p和q均在root的左子树或者右子树,则在root的左子树或者右子树继续递归寻找最近公共祖先

代码实现

private TreeNode res = null;
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {dfs(root,p,q);return res;
}public boolean dfs(TreeNode root, TreeNode p,TreeNode q){if(root==null){return false;}boolean left = dfs(root.left,p,q);boolean right = dfs(root.right,p,q);if(left&&right){res = root;}if(root == p || root ==q){res = root;}return left || right || root==p || root==q;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144750.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

《The Rise and Potential of Large Language Model Based Agents: A Survey》全文翻译

The Rise and Potential of Large Language Model Based Agents: A Surve - 基于 LLMs 的代理的兴起和潜力:一项调查 论文信息摘要1. 介绍2. 背景2.1 AI 代理的起源2.2 代理研究的技术趋势2.3 为什么大语言模型适合作为代理大脑的主要组件 3. 代理的诞生&#xff1a…

APP渗透测试

APP反抓包突破 抓包失败分析 工具证书未配置 app不使用HTTP/S协议 反模拟器 1.使用真机进行抓包 2.用模拟器模拟真机 3.逆向删除反模拟器代码打包重新测试 反证书 SSL证书绑定分为单向校验和双向校验,单向校验就是客户端校验服务端的证书,双向…

Jenkins 权限管理

关于Role-based Authorization Strategy 使用Jenkins自身的权限管理过于粗糙,无法对单个、一类项目做管理,我们可以使用 Role-based Authorization Strategy插件来管理项目、角色。 首先安装该插件:在Jenkins查看该插件有无安装 在Jenkins-…

机器学习 09 随机森林

三、 偏差和方差 偏差度量了学习算法的期望预测与真实结果的偏离程度, 即刻画了学习算法本身的拟合能力。 方差:离散程度, 也就是该随机变量在其期望值附近的波动程度 噪声表达了在当前任务上,任何学习算法所能达到的期望泛化误差的下界, 即刻画了学习问题本身的难…

【AI绘画】Stable Diffusion WebUI

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

react悬浮球效果展示

1.需求 在开发项目时,当用户登录后,需要在主页显示一个悬浮球(可以自由拖动),点击悬浮球后,进入目标页面,如图所示: 2.实现 把上面需要实现的悬浮球功能写成一个组件,页面…

【python入门篇】列表简介及操作(2)

列表是什么? 列表是由一系列按特定顺序排列的元素组成。你可以创建包含字母表中的所有字母、数字 0~9 或所有家庭成员的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。列表通常包含多个元素,因此给列表指定一…

企业知识库一站式搭建指南,从0到1搞定知识库搭建!

如今,企业组织的可持续发展依靠企业的知识管理和迭代创新,只有一站式的企业知识库的创建,才能保证存储、组织和共享企业内部的知识、信息和资源。 目前业内很多公司都通过HelpLook来搭建知识库,用于集合企业内部的各种知识资产&am…

TikTok海外扩张:亚马逊的新对手崛起

随着社交媒体和电子商务的融合,TikTok正迅速崭露头角,成为亚马逊等传统电商巨头的潜在竞争对手。这一新兴平台的快速发展引发了广泛的关注,特别是在全球范围内。 在这篇文章中,我们将探讨TikTok海外扩张的战略,以及它…

img镜像如何制作虚拟机

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、准备工作二、操作步骤1.把新建的虚拟磁盘挂载到虚拟机2.把需要的文件拷贝到虚机中3、 烧录 总结 前言 一般制作虚拟机都是使用iso镜像,如果遇到…

二、vue2脚手架-组件化开发

| vue中的图片打包后会转换为base64格式 组件的使用 1.创建组件:component文件夹中创建HelloWorld.vue文件 2.在app.vue中引入组件 组件间的通信/传值(常用) 一、prop父传子 1.App.vue中的引入组件中创建需要传递的数据 2.在子组件中接…

【Spring Boot】实战:实现数据缓存框架

🌿欢迎来到@衍生星球的CSDN博文🌿 🍁本文主要学习【Spring Boot】实现数据缓存框架 🍁 🌱我是衍生星球,一个从事集成开发的打工人🌱 ⭐️喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路⭐️💠作为一名热衷于分享知识的程序员,我乐于在CSDN上与广大开发者…

修改sqlmap-Tamper脚本

修改sqlmap-Tamper脚本 文章目录 修改sqlmap-Tamper脚本1 sqlmap官网2 sql注入漏洞注入尝试3 环境:sqli-labs/Less-26a/3.1 尝试宽字节注入: 3.2 sqlmap使用3.3准备修改sqlmap使用 4 sqlmap中-tamper工厂(输入输出)4.1 [参考文章:…

5+铁死亡+分型+WGCNA+机器学习分析

今天给同学们分享一篇铁死亡分型WGCNA机器学习的生信文章“Identification of ferroptosis-related molecular clusters and genes for diabetic osteoporosis based on the machine learning”,这篇文章于2023年8月14日发表在Front Endocrinol (Lausanne)期刊上&am…

求职面试,如何赢得面试官的满意赞许?

在面试的时候,我们会遇到很多突发事件,这些事件让我们不能很好地将面试进行下去。那么,在出现事情的时候,我们应该如何让面试官满意? 1、选择得体的服装 在面试的时候,想要面试官更好地选择自己&#x…

二、C++项目:仿muduo库实现并发服务器之时间轮的设计

文章目录 一、为什么要设计时间轮?(一)简单的秒级定时任务实现:(二)Linux提供给我们的定时器:1.原型2.例子 二、时间轮(一)思想(一)代码 一、为什…

Java基础面试题精选:深入探讨哈希表、链表和接口等

目录 1.ArrayList和LinkedList有什么区别?🔒 2.ArrayList和Vector有什么区别?🔒 3.抽象类和普通类有什么区别?🔒 4.抽象类和接口有什么区别?🔒 5.HashMap和Hashtable有什么区别&…

PyTorch 模型性能分析和优化 — 第 1 部分

一、说明 这篇文章的重点将是GPU上的PyTorch培训。更具体地说,我们将专注于 PyTorch 的内置性能分析器 PyTorch Profiler,以及查看其结果的方法之一,即 PyTorch Profiler TensorBoard 插件。 二、深度框架 训练深度学习模型,尤其是…

【C/C++笔试练习】——数组名和数组名、switch循环语句、数据在计算机中的存储顺序、字符串中找出连续最长的数字串、数组中出现次数超过一半的数字

文章目录 C/C笔试练习1.数组名和&数组名(1)数组名和&数组名的差异(2)理解数组名和指针偏移(3)理解数组名代表的含义(4)理解数组名代表的含义 2.switch循环语句(6…

MySQL到TiDB:Hive Metastore横向扩展之路

作者:vivo 互联网大数据团队 - Wang Zhiwen 本文介绍了vivo在大数据元数据服务横向扩展道路上的探索历程,由实际面临的问题出发,对当前主流的横向扩展方案进行了调研及对比测试,通过多方面对比数据择优选择TiDB方案。其次分享了整…