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

【done】剑指offer68:二叉树最近公共祖先

LCA(lowest common ancestor)问题
力扣,【二叉搜索树】https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/description/
【普通二叉树】https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/

1.二叉搜索树

思路:https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/solutions/216894/mian-shi-ti-68-i-er-cha-sou-suo-shu-de-zui-jin-g-7/

/**
 * 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) {
                root = root.left;
            } else if (p. val > root.val && q.val > root.val) {
                root = root.right;
            } else {
                break;
            }

        }
        return root;
    }
}

2.普通二叉树

/**
 * 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) {
        if (root == null) {
            return null;
        }
        if (root == p || root == q) {
            return root;
        }
        TreeNode leftNode = lowestCommonAncestor(root.left, p, q);
        TreeNode rightNode = lowestCommonAncestor(root.right, p, q);
        if (leftNode != null && rightNode != null) {
            return root;
        }
        if (leftNode == null && rightNode == null) {
            return null;
        }
        return leftNode == null ? rightNode : leftNode;
    }
}

http://www.kler.cn/a/133439.html

相关文章:

  • 深入探讨数据库索引类型:B-tree、Hash、GIN与GiST的对比与应用
  • 【愚公系列】《循序渐进Vue.js 3.x前端开发实践》022-定义组件
  • DeepSeek API 的获取与对话示例
  • C#常用257单词
  • Canny 边缘检测
  • 网易前端开发面试题200道及参考答案 (下)
  • IDEA远程一键部署SpringBoot到Docker
  • OpenAI GPT5计划泄露
  • 解析:什么是生成式AI?与其他类型的AI有何不同?
  • hyperledger fabric2.4测试网络添加组织数量
  • PL/SQL编程
  • QT多线程项目中子线程无法修改主线程的ui组件
  • Windows 下 Sublime Text 3.2.2 下载及配置
  • Object常用方法——toString()
  • Linux - 进一步理解 文件系统 - inode - 机械硬盘
  • C语言程序设计(入门)
  • py 字符串转INT
  • PS 颜色取样器标尺工具 基本使用讲解
  • Linux中的进程终止(详解)
  • Pandas数据操作_Python数据分析与可视化
  • Python学习(一)基础语法
  • 11. Spring源码篇之实例化前的后置处理器
  • ElasticSearch综合练习题,ES为8版本,使用Kibana运行语句
  • SQL Server中substring的用法
  • 在Rust编程中使用泛型
  • Mysql-CRUD(增删查改)