当前位置: 首页 > news >正文

2025年-G10-Lc84-235.二叉搜索树的最低公共祖先-java版

1.题目描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.思路
思路1:
在这里插入图片描述

思路2:
在这里插入图片描述

思路3:在这里插入图片描述

3.java代码实现
方法一:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */

class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
  
        
      
        while(root!=null)
        {
           if(p.val>root.val && q.val>root.val)
            //说明p,q的值都在右子树
           {root=root.right;}
           else if(p.val<root.val&&q.val<root.val)
           {
            root=root.left;
           }
           else
           {
            return root;
           }
        }  
              return null;
            
    }
}

方法二:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */

class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
  
       //1.基本情况:如果 root 为 null 或 root 是 p 或 q,返回 root(题目有说,允许节点是其自身的后代)
       if(root==null||root==p||root==q)
       {
        return root;
       }

       //2. 递归查找左子树和右子树中的 LCA
      TreeNode left  = lowestCommonAncestor(root.left,p,q);
      TreeNode right = lowestCommonAncestor(root.right,p,q);

     // 3.如果左子树和右子树都返回非空结果,说明当前节点是 LCA(root)
     if(right!=null&&left!=null)
     {
        return root;
     }

        // //4 否则,返回左子树或右子树中的非空结果
        // return  left!=null?left:right;

        if(left!=null)
        {
            return left;
        }
        else
        {
            return right;
        }

       //3.
        
      
        // while(root!=null)
        // {
        //    if(p.val>root.val && q.val>root.val)
        //     //说明p,q的值都在右子树
        //    {root=root.right;}
        //    else if(p.val<root.val&&q.val<root.val)
        //    {
        //     root=root.left;
        //    }
        //    else
        //    {
        //     return root;
        //    }
        // }  
        //       return null;
            
    }
}

相关文章:

  • HarmonyOS NEXT 创新应用开发白皮书(api12+)
  • QML Image 圆角设置
  • SpringBoot核心框架之AOP详解
  • Linux 内核自旋锁spinlock(三)--- MCS locks
  • 区块链中的递归长度前缀(RLP)序列化详解
  • JCRQ1河马算法+消融实验!HO-CNN-LSTM-Attention系列四模型多变量时序预测
  • Redis中集合(Set)常见命令详解
  • nginx配置ssl
  • Spring Boot拦截器(Interceptor)详解
  • P1034 [NOIP 2002 提高组] 矩形覆盖
  • DeepSeek人工智能大模型全解析:技术架构与应用场景解读
  • go 模块管理
  • react+typescript,初始化与项目配置
  • UE4 GamePlay架构介绍
  • Springboot的jak安装与配置教程
  • 【C语言】结构体内存对齐问题
  • LeetCode 热题 100 49. 字母异位词分组
  • ✨ 索引有哪些缺点以及具体有哪些索引类型
  • Redis-AOF
  • go 反射 interface{} 判断类型 获取值 设置值 指针才可以设置值
  • 京东一季度净利增长五成,营收增速创近三年新高,称外卖业务取得显著进展
  • 济南市委副秘书长吕英伟已任历下区领导
  • 甘肃:今年6月前,由县级党委、政府制定农村彩礼倡导性标准
  • 有关部门负责人就《新时代的中国国家安全》白皮书答记者问
  • 宁德时代港股募资预计最高至50亿美元:90%将投向匈牙利项目
  • 巴防空系统击落印度无人机,印称巴方违反停火协议