[力扣题解] 236. 二叉树的最近公共祖先

题目:236. 二叉树的最近公共祖先

思路

代码

用深度搜索的思想(好吧,前序、中序、后序都是深搜思想),保存寻找路径,看看找到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:vector<TreeNode*> path;vector<vector<TreeNode*>> result;void travel(TreeNode* cur, TreeNode* target){   if(cur == NULL){return;}// 中if(cur->val == target->val){result.push_back(path);return;}// 左if(cur->left){path.push_back(cur->left);travel(cur->left, target);path.pop_back();}// 右if(cur->right){path.push_back(cur->right);travel(cur->right, target);path.pop_back();}}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {int i, j, min_length;path.push_back(root);travel(root, q);path.clear();path.push_back(root);travel(root, p);/*for(i = 0; i < result.size(); i++){for(j = 0; j < result[i].size(); j++){cout << result[i][j]->val << ", ";}cout << endl;}*/// cout << "result[0].size() : " << result[0].size() << endl;// cout << "result[1].size() : " << result[1].size() << endl;min_length = min(result[0].size(), result[1].size());for(i = 0; i < min_length; i++){if(result[0][i]->val == result[1][i]->val){continue;}else{break;}}// cout << "i : " << i << "result[0][i] : " << result[0][i]->val;return result[0][i-1];}
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代理IP使用api接

代理IP使用API接口&#xff0c;通常是指通过API接口获取代理IP地址&#xff0c;并将其应用于爬虫、数据采集、反爬虫等场景中&#xff0c;以提高数据采集效率和保护数据采集安全。 一般来说&#xff0c;代理IP提供商会提供API接口文档和SDK供开发者使用。你需要先注册并登录代…

硬件工程师的蜗牛成长路

一名合格的硬件工程师&#xff0c;需要掌握的知识有很多&#xff0c;知识点积累不是一蹴而就&#xff0c;而是细水长流&#xff0c;螺旋提升&#xff0c;不急&#xff0c;慢慢来&#xff0c;想掌握的都能掌握&#xff0c;就让时间来见证个人的成长路径。 ---大青山 2024/6/10 …

diffusers 再次继续训练LoRA时,如何导入已有的LoRA权重

我们通常会有微调扩散模型的需求&#xff0c;比如对LoRA进行训练来实现对Stable diffusion模型的微调。 但是有时候我们需要复用先前训练好的LoRA参数来继续进行训练。此时并不需要我们重新使用API向U-Net网络加载LoRA对应的adapter参数权重&#xff0c;我们可以直接通过diffu…

优质免费的 5 款翻译 API 接口推荐

当谈到翻译API时&#xff0c;我们通常指的是一种编程接口&#xff0c;它允许开发者将文本从一种语言翻译成另一种语言。这些API通常由专业的翻译服务提供商提供&#xff0c;如谷歌翻译 API、实时翻译API、腾讯翻译API、DeepL翻译API、Azure翻译API等。 这些API通常提供多种语言…

MFC 教程-文本框失去焦点处理

MFC 教程-文本框失去焦点处理 一、MFC 文本框控件概述 1.1 定义与应用场景 在 MFC(Microsoft Foundation Class)中,文本框控件(CEdit)是一个常用的用户界面元素,用于接收用户输入的文本信息。它广泛应用于各种窗口应用程序中,从简单的登录界面到复杂的数据输入表单。 …

基于springboot的欢迪迈手机商城源码数据库

现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本欢迪迈手机商城就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&#xf…

使用Redis的优势以及会引发的问题

优势 ①使用redis代表着高性能还有高并发&#xff0c;高性能很好理解&#xff0c;redis会缓存我们访问的数据。他是基于内存的&#xff0c;第一次访问数据库我们可能需要800ms&#xff0c;但是访问后如果使用redis进行缓存&#xff0c;第二次乃至后面访问相同的数据就只需要去…

使用opencv在图像上画带刻度线的对角线,以图像中心点为0点

使用OpenCV在图像上绘制带刻度线的对角线&#xff0c;可以通过以下步骤实现。我们将首先找到图像的中心点&#xff0c;然后绘制对角线线&#xff0c;并在这些线的适当位置绘制刻度线。以下是详细的C代码示例&#xff1a; void Draw_diagonal(cv::Mat& mat, double dFactor…

ViT:2 理解CLIP

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则提…

js中如何清除一个对象中指定的键名

在 JavaScript 中&#xff0c;你可以使用 delete 关键字来删除对象中的指定键名。以下是一个简单的示例代码&#xff0c;演示如何清除一个对象中指定的键名&#xff1a; // 创建一个包含键值对的对象 let person {name: Alice,age: 30,city: New York };console.log(Before d…

2.linux下的文件系统结构、磁盘管理以及常规操作

一、文件系统结构 1.1根目录 Linux下“/”就是根目录&#xff0c;所有的目录都是由根目录衍生出来的。 1.2Ubuntu文件系统结构 文件作用/bin存放二进制可执行文件&#xff0c;这些命令在单用户模式下也能够被使用。可以被root和一般账户使用/bootUbuntu内核和启动文件&#…

【SpringBoot】在Spring中使用自定义条件类在Java声明Bean时实现条件注入

在Spring框架中&#xff0c;通过实现org.springframework.context.annotation.Condition接口并重写matches()方法&#xff0c;可以根据自定义条件来控制Bean的注入。这种机制非常灵活&#xff0c;可以帮助开发人员根据环境或配置来有选择地启用或禁用某些Bean。本文将详细介绍如…

express+vue实现一个在线im

在线体验地址 需要用邮箱注册一个账号 在线链接 目前实现的功能 1、在线聊天(群聊) 2、实时监控成员状态 3、历史聊天&#xff0c;下拉加载 4、有新消息&#xff0c;自动滚动到最新消息&#xff0c;如果自己在查看历史记录&#xff0c;不会强行滚动 exprees部分 创建几个表…

《永生之后》读后

文章以2120年背景创作&#xff0c;人类进入永生之年&#xff0c;发现了延长寿命的药物。停滞的死亡&#xff0c;新生的继续造生了人口大爆炸&#xff0c;于是分成两个阵营-长生区&#xff08;不再繁衍后代&#xff09;与生死区&#xff08;不服用药物&#xff0c;仍然生老病死&…

单片机中的四种通信总线:UART、I2C、SPI、CAN

1. UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09; 特点&#xff1a; 通信方式&#xff1a;异步串行通信连接线数&#xff1a;两条&#xff08;TX传输线&#xff0c;RX接收线&#xff09;时钟信号&#xff1a;不需要&#xff0c;双方通过预设波特…

PySpark教程(001):基础准备与数据输入

PySpark 学习目标 了解什么是Spark、PySpark了解为什么学习PySpark了解如何和大数据开发方向进行衔接 Spark是什么&#xff1f; Apache Spark是用于大规模数据处理的统一分析引擎。 简单来说&#xff0c;Spark是一款分布式的计算框架&#xff0c;用于调度成百上千的服务器…

MyBatis总结(2)- MyBatis实现原理(一)

Mybatis实现原理&#xff1a; 概括一句话&#xff1a;约定配置参数mybatis-config.xml&#xff0c;映射关系JavaBean-mapper.xml&#xff0c;用SqlSessionFactoryBuilder构建应用程序运行期间需要的SqlSessionFactory实例对象&#xff0c;当请求或方法需要执行CURD操作时&…

初识volatile

volatile&#xff1a;可见性、不能保证原子性(数据不安全)、禁止指令重排 可见性&#xff1a;多线程修改共享内存的变量的时候&#xff0c;修改后会通知其他线程修改后的值&#xff0c;此时其他线程可以读取到修改后变量的值。 指令重排&#xff1a;源代码的代码顺序与编译后字…

基于STM32开发的智能空气质量监控系统

⬇帮大家整理了单片机的资料 包括stm32的项目合集【源码开发文档】 点击下方蓝字即可领取&#xff0c;感谢支持&#xff01;⬇ 点击领取更多嵌入式详细资料 问题讨论&#xff0c;stm32的资料领取可以私信&#xff01; 目录 引言环境准备智能空气质量监控系统基础代码实现&…

三十七篇:大数据架构革命:Lambda与Kappa的深度剖析

大数据架构革命:Lambda与Kappa的深度剖析 1. 引言 在这个数据驱动的时代,我们面临着前所未有的挑战和机遇。随着数据量的爆炸性增长,传统的数据处理方法已无法满足现代业务的需求。大数据处理不仅涉及数据量的增加,还包括数据类型的多样化、数据来源的广泛性以及对实时数据…