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

目录

一、问题描述

二、解题思路

三、代码实现

四、刷题链接


一、问题描述

二、解题思路

        这个问题和之前做过的问题很相似:

深度优先遍历-在二叉树中找到两个节点的最近公共祖先-CSDN博客文章浏览阅读80次。java刷题:在二叉树中找到两个结点的最近公共祖先结点。https://blog.csdn.net/hehe_soft_engineer/article/details/139799167?spm=1001.2014.3001.5501        不过在这个问题背景下,结点之间是大小相对有序的,所以:

        1.我们可以直接根据当前结点和目标值p和q之间的大小关系确定当前结点是否是最近的公共祖先结点

        2.由二叉搜索树的性质决定,左侧的所有值都比根结点小,右侧的所有值都比根结点大,所以我们先要对p和q进行大小判断,选择出较小值minnum,选出较大值maxnum

        3.1 当minnum都大于当前结点值时,说明minnum和maxnum一定在当前结点的右子树;

        3.2 当maxnum都小于当前结点值时,说明minnum和maxnum一定在当前结点的左子树;

        3.3 当maxnum大于当前结点值,minnum小于当前结点值时,当前结点一定是最近的祖先结点。

三、代码实现

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    int resnum=0;
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @param p int整型 
     * @param q int整型 
     * @return int整型
     */
    public int lowestCommonAncestor (TreeNode root, int p, int q) {
        int maxnum=p>q?p:q;
        int minnum=p<q?p:q;
        
        dfs(root,maxnum,minnum);

        return resnum;

    }

    public void dfs(TreeNode root,int maxnum,int minnum){
        if(maxnum<root.val){
            dfs(root.left,maxnum,minnum);
        }else if(minnum>root.val){
            dfs(root.right,maxnum,minnum);
        }else{
            if(root.val==maxnum){
                resnum=maxnum;
            }else if(root.val==minnum){
                resnum=minnum;
            }else{
                resnum=root.val;
            }
            return;
        }
    }

}

四、刷题链接

二叉搜索树的最近公共祖先_牛客题霸_牛客网

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

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

相关文章

用于快速充电站的 AC/DC 转换器概述

电动汽车构成了未来实现可持续交通部门的有前途技术的主要部分。AC/DC 转换器是扩展和改进 EV 功能的骨干组件。本文概述了 AC/DC 转换器、充电站类型、传统两电平 (2L) AC/DC 转换器面临的问题以及使用多电平转换器 (MLC) 的重要性。 AC/DC 充电器示意图&#xff08;&#xff…

2024广东省职业技能大赛云计算赛项实战——Minio服务搭建

Minio服务搭建 前言 这道题是比赛时考到的&#xff0c;没找到具体题目&#xff0c;但在公布的样题中找到了&#xff0c;虽然很短~ 使用提供的 OpenStack 云平台&#xff0c;申请一台云主机&#xff0c;使用提供的软件包安装部署 MINIO 服务并使用 systemctl 管理 Minio是一个…

关于接口测试——自动化框架的设计与实现

一、自动化测试框架 在大部分测试人员眼中只要沾上“框架”&#xff0c;就感觉非常神秘&#xff0c;非常遥远。大家之所以觉得复杂&#xff0c;是因为落地运用起来很复杂&#xff1b;每个公司&#xff0c;每个业务及产品线的业务流程都不一样&#xff0c;所以就导致了“自动化…

Linux_理解进程地址空间和页表

目录 1、进程地址空间示意图 2、验证进程地址空间的结构 3、验证进程地址空间是虚拟地址 4、页表-虚拟地址与物理地址 5、什么是进程地址空间 6、进程地址空间和页表的存在意义 6.1 原因一&#xff08;效率性&#xff09; 6.2 原因二&#xff08;安全性&#xff09; …

MVC模式中控制器、视图和模型之间的关系如何?

mvc模式将应用程序逻辑与表示层分离&#xff0c;包括控制器、视图和模型三个组件&#xff1a;控制器&#xff1a;协调用户输入&#xff0c;获取模型数据&#xff0c;验证输入&#xff0c;执行业务规则。视图&#xff1a;显示模型数据&#xff0c;不包含业务逻辑。模型&#xff…

如何使用AI解决所有EXCEL公式问题

有个假设前提&#xff0c;你略懂EXCEL公式 知道单元格“ $C1” 和 ”C1”的区别&#xff0c;当然你也可以自行度娘或问AI。 AI使用文心一言免费版方便容易获取。 第一步也是唯一的一步&#xff0c;向AI准确描述你的需求 示例&#xff1a;学生的成绩分布在0-100分之间&#x…

echarts+vue2实战(一)

目录 一、项目准备 二、(横向分页)柱状图 2.1、动态刷新 2.2、UI调整 2.3、分辨率适配 三、(竖向平移)柱状图 3.1、平移动画 3.2、不同数值显示不同颜色 四、(下拉切换)折线图 4.1、切换图表和分辨率适配 4.2、UI调整 五、(三级分类)饼图 5.1、数据切换 六、圆环…

dial tcp 10.96.0.1:443: connect: no route to host

1、创建Pod一直不成功&#xff0c;执行kubectl describe pod runtime-java-c8b465b98-47m82 查看报错 Warning FailedCreatePodSandBox 2m17s kubelet Failed to create pod sandbox: rpc error: code Unknown desc failed to setup network for…

java8 将对象list中的某一个属性取出组成一个list

实体类 public class Sp {String spdm;String spmc;public Sp() {}public Sp(String spdm, String spmc) {this.spdm spdm;this.spmc spmc;}public String getSpdm() {return spdm;}public void setSpdm(String spdm) {this.spdm spdm;}public String getSpmc() {return sp…

太爱这种数据可视化效果,零售行业的都看过来

在当今数字化浪潮下&#xff0c;数据可视化已成为零售行业洞察市场趋势、优化运营决策的关键技术。奥威BI零售数据分析方案凭借其卓越的数据可视化效果&#xff0c;成为零售企业的得力助手。接下来就通过BI节假日分析报表来简单地感受一下。 注&#xff1a;该BI节假日分析报表…

反激开关电源输出电解电容选型及计算

电容高频模型&#xff1a;ESRESLC的串联 1、耐压&#xff1a;根据输出的电压来取&#xff0c;需留一定余量&#xff0c;比如5V输出可以选6.3V或者10V的电解电容 2、容量 纹波电压 电容充放电引起的纹波电压&#xff08;与电容容量存在着直接因果关系&#xff09; ESR引起的纹…

校园任务平台系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;论坛管理&#xff0c;任务咨询管理&#xff0c;用户管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;任务资讯公告&#…

Springboot 实体类赋默认值 @Value 失效? 那怎么搞?

这是最近一个小伙找上来问的问题&#xff0c; 我初一看还没看出来啥猫腻&#xff0c;后面认真一想&#xff0c;决定也写下来记录下&#xff0c;给其他初学者也知道下。 原先思路错误代码&#xff1a; 这个小伙想利用 Value 注解&#xff0c; 给这个属性 赋值&#xff0c;defaul…

js 实现将后端请求来的 Blob 数据保存到用户选择的任意目录

js实现将后端请求来的 Blob 数据保存到用户选择的任意目录 实现方式 实现方式 实现方式是使用 window 的 showSaveFilePicker 方法。Window 接口的 showSaveFilePicker() 方法用于显示一个文件选择器&#xff0c;以允许用户保存一个文件。可以选择一个已有文件覆盖保存&#xf…

快手电商:618大促开启以来,短视频挂车GMV同增66%

日前&#xff0c;快手电商发布618大促阶段战报。数据显示&#xff0c;在5月20日-6月18日活动期间&#xff0c;平台动销商家数同比增长26%&#xff0c;动销中小商家数同比增长28%&#xff0c;动销中小商家订单量同比增长25%。 从经营场域来看&#xff0c;泛货架场已成为快手电商…

纯css星空动画

让大家实现一个这样的星空动画效果,大家会怎么做? js,不! 其实使用css就能写 我也不藏着掖着,源码直接放下面了 <script setup></script><template><div class"box"><div v-for"i in 5" :key"i" :class"layer…

PostgreSQL性能优化之分区表 #PG培训

在处理大规模数据时&#xff0c;PostgreSQL的性能优化是一个非常重要的话题&#xff0c;其中分区表&#xff08;Partitioned Tables&#xff09;是提高查询和数据管理效率的重要手段。本文将详细介绍PostgreSQL分区表的概念、优势、创建与管理方法以及一些常见的优化策略。 #P…

《广州化工》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《广州化工》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊 问&#xff1a;《广州化工》级别&#xff1f; 答&#xff1a;省级。主办单位&#xff1a;广州化工集团有限公司 主管单位&#xff1a;广州化工…

【CSS in Depth2精译】1.1.1 样式表来源

您添加到网页的样式表并非浏览器呈现样式的唯一来源。样式表有三种不同的类型或来源。您添加到页面的样式称为 作者样式&#xff08;author styles&#xff09;&#xff1b;此外还有 用户样式&#xff08;user styles&#xff09;&#xff0c;即终端用户设置的自定义样式&#…

python-赏月

[题目描述] 在某个星球上看到的月亮大小有一个规律&#xff0c;月亮为每30天一个周期&#xff0c;在这30天的周期里&#xff0c;月亮的大小分别为 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1。 虽然天气很冷&#xff0c;但这个星球上的某个居民今…