刷代码随想录有感(58):二叉树的最近公共祖先

题干:

代码:

class Solution {
public:
    TreeNode* traversal(TreeNode* root, TreeNode* p, TreeNode* q){
        if(root == NULL)return NULL;
        if(root == p || root == q)return root;
        TreeNode* left = traversal(root->left, p, q);
        TreeNode* right = traversal(root->right, p, q);
        if(left != NULL && right != NULL)return root;
        else if(left != NULL && right == NULL)return left;
        else if(left == NULL && right != NULL)return right;
        else return NULL;
    }
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        if(root == NULL)return NULL;
        return traversal(root ,p, q);
    }
};

思考:回溯思想总与二叉树的后序遍历挂钩;递归的return 不应该将其看为一个值,而应该是一个“响应”,来传递有没有找到信息。譬如:

if(root == p || root == q)return root;//意思是遇到p或q了,要将遇到pq的消息返回给上一层

这一行代码与下面五行相挂钩:

if(left != NULL && right != NULL)return root;//说明找到了pq,直接返回pq的root
else if(left != NULL && right == NULL)return left;//说明右边找不到pq而左边可以,将左向上返回
else if(left == NULL && right != NULL)return right;//说明左边找不到pq而右边可以,将右向上返回
else return NULL;//左右都为空,返回空

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JuiceFS v1.2-beta1,Gateway 升级,多用户场景权限管理更灵活

JuiceFS v1.2-beta1 今天正式发布。在这个版本中,除了进行了大量使用体验优化和 bug 修复外,新增三个特性: Gateway 功能扩展:新增了“身份和访问管理(Identity and Access Management,IAM)” 与…

泛型编程四:栈、堆,内存管理

文章目录 前言一、栈、堆栈(Stack)堆(Heap) 二、static生命期三、heap生命期四、new、delete的作用机制五、动态分配的内存(in VC)如图,第一列为调试模式下的复数的内存分配,复数有两…

电子合同:纸质合同的未来替代者?

随着科技的迅猛发展,电子合同作为一种新兴的合同形式,逐渐在各行各业中崭露头角。那么,电子合同是否会替代纸质合同,成为未来合同形式的主流呢?本文将就此话题展开探讨。 首先,我们来看电子合同的优势。电…

cookie没有携带的问题

背景: build-model应用在hcs迁移的时候,前、后端各自部署了一个新应用,但是调试时候发现没有cookie,导致鉴权失败! 注: 后端通过cookie中的token做鉴权的,前端调用接口的时候,查看&…

SPD1179 电路设计---汽车电机控制设计

概述 SPD1179 是旋智针对汽车应用推出的一颗高度集成的片上系统(SOC) 微控制器,内置 32 位高性能 ARMCortex-M4F 内核,最高 100MHz 的软件可编程时钟频率, 32KB SRAM, 128KB 嵌入式 FLASH, 1KB …

04-18 周四 为LLM_inference项目配置GitHub CI过程记录

04-18 周四 为LLM_inference项目配置GitHub CI过程记录 时间版本修改人描述2024年4月18日10:30:13V0.1宋全恒新建文档 简介和相关文档 04-15 周一 GitHub仓库CI服务器配置过程文档actions-runner 是托管与GitHub上的仓库,下载最新的客户端程序即可。self hosted r…

多C段的美国站群服务器有什么用途?

多C段的美国站群服务器有什么用途? 多C段的美国站群服务器是一种常见的网络运营策略,其用途主要体现在以下几个方面: 多C段的美国站群服务器有什么用途? 1. 提高站点排名和流量 部署多个站点在不同的C段IP地址上,可以通过不同的IP地址发布…

BGP协议应用:SW1、SW2、SW3、RT1、RT2之间运行BGP协议

8.SW1、SW2、SW3、RT1、RT2之间运行BGP协议,SW1、SW2、RT1 AS号65001、RT2 AS号65002、SW3 AS号65003。 (1)SW1、SW2、SW3、RT1、RT2之间通过Loopback1建立IPv4 BGP邻居。SW1和SW2之间财务通过Loopback2建立IPv4 BGP邻居,SW1和SW2的Loopback2互通采用静态路由。 (2)SW1…

运行一个jar包

目录 传送门前言一、Window环境二、Linux环境1、第一步:环境配置好,安装好jdk2、第二步:打包jar包并上传到Linux服务器3、第三步:运行jar包 三、docker环境1、Linux下安装docker和docker compose2、Dockerfile方式一运行jar包2.1、…

优思学院|HR部门如何制定公司的精益六西格玛培训计划?

在许多企业中,精益六西格玛作为一种提升效率和质量的重要方法论,越来越受到重视。HR部门在推广和实施精益六西格玛培训计划中其实也扮演着关键角色。以下是HR部门可以采取的几个步骤,以有效地制定和实施这样的培训计划。 1. 需求分析 首先&…

人工智能学习+Python的优势

1.人工智能的发展阶段 1.1 强人工智能: 1.2 弱人工智能: 2.符号学习 符号学习的本质就是:规定好的逻辑和顺序,根据这个模板告诉机器接下来需要做什么,遵循if...then原则——>缺点:不能根据新的场景…

本地主机访问服务器的Redis -- 配置 ssh 端口转发

前言 在进行Java开发时,高度的依赖 Windows 上的开发软件 idea ,那么我们想访问位于服务器上的 redis 怎么办呢?在平时我们想访问位于服务器上的程序,只需要开放它的端口即可,比如我们创建的网站,比如 tomc…

Go通过CRUD实现学生管理系统

虽然这个项目没有什么含金量,但是可以熟悉go的语法和go开发项目的一般流程 项目结构 项目实现了五个功能: (1)增加一个学生 (2)删除一个学生 (3)修改一个学生的信息 (4&#xf…

基于微信小程序的图书馆预约系统的设计与实现

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…

【一起深度学习吧!!!!!】24/05/03

卷积层里的多输入输出通道 1、 多输入通道:代码演示: 多输出通道:代码实现: 1、 多输入通道: 当输入包含多个通道时,需要构造一个输入通道与之相等的卷积核,以便进行数据互相关计算。 例如李沐…

责任链模式和观察者模式

1、责任链模式 1.1 概述 在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导…

XMall-Front:基于Vue.js的XMall商城前台页面的开发实践

XMall-Front:基于Vue.js的XMall商城前台页面的开发实践 摘要 随着电子商务的蓬勃发展,用户体验逐渐成为决定电商平台成功与否的关键因素。作为XMall商城项目的一部分,XMall-Front是基于Vue.js的前端页面开发,其目标是为用户提供…

《深入解析WIndows操作系统》第10章读书笔记

1、大页面和小页面:虚拟地址空间被划分成以页面为单位,这是因为硬件内存管理单元在页面的粒度上,将虚拟地址转译为物理地址。Windows支持两种页面尺寸:大页面和小页面,根据处理器体系结构不同,实际尺寸值有…

HAL PWM 配置 占空比 频率 stm32 学习笔记

title: HALPWM配置占空比频率 tags: STM32ClionHal 1.STM32CubeMX学习笔记(13)——PWM输出(呼吸灯)使用 2.STM32标准库HAL库 | 高精度动态调节PWM输出频率占空比 看你cubemx 里面的配置时钟频率是多少 参照第二篇文章描述修改 下面俩个参数就行 uin…

SAP生产订单常用状态以及

常用系统状态: 状态 状态 CRTD 已建立 REL 已核发 CNF 已确认 PCNF 已部份确认 DLV 已交货 DLT 删除指示码 LKD 已锁住 TECO 技术完成 GMPS 已发料 关闭 关闭 工单结案前的生产报表分析 路径:后勤系统- 生产- 现场控制- 信息系统-订单信息系…
最新文章