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

【LeetCode】【算法】236. 二叉树最近公共祖先

LeetCode 236. 二叉树最近公共祖先

题目描述

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

思路

思路:后序遍历(左右中),如果在左/右侧树上找到了该节点则返回对应节点,其公共节点就为中,否则返回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) {
        // 后序遍历
        // 终止条件
        if (root == null) return root;
        if (root == p || root == q) return root;
        // 递归
        TreeNode treeNodeLeft = lowestCommonAncestor(root.left, p, q);
        TreeNode treeNodeRight = lowestCommonAncestor(root.right, p, q);
        if (treeNodeLeft != null && treeNodeRight != null) return root; // 说明公共节点在root
        else if (treeNodeLeft == null && treeNodeRight != null) return treeNodeRight; // 返回这个节点本身
        else if (treeNodeLeft != null && treeNodeRight == null) return treeNodeLeft;
        else return null; // 没找到p和q,返回null
    }
}

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

相关文章:

  • Rasa框架的优点和缺点
  • mysql,数据库数据备份
  • GPU环境配置
  • Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类
  • 制造研发企业与IPD管理体系
  • 鸿蒙Next之包体积极限优化
  • 消息队列面试——打破沙锅问到底
  • 【系统架构设计师】论文:论基于 ABSD 的软件开发
  • Elasticsearch实战应用:构建高效的全文搜索引擎
  • 跨平台使用高德地图服务
  • C# Modbus RTU通讯回顾
  • Rust常用数据结构教程 序列
  • [SDX35]SDX35 dtsi配置GPIO_108不生效问题分析及解决方案
  • 使用 AMD GPU 的 ChatGLM-6B 双语语言模型
  • 120. gltf工厂模型设置发光描边
  • SpringBoot2~~~
  • 什么是区块链中的不可能三角?
  • MySQL数据迁移到SQLServer数据库
  • 数据分析的基本过程
  • 数据中台一键大解析!
  • 《常用深度学习神经网络及其原理与应用场景》
  • [出海记录]开发新手的第 11 个站点上线
  • mysql 和 java 对应数据类型
  • 【java】ArrayList与LinkedList的区别
  • 健身中心运营优化:SpringBoot管理系统
  • 华为HarmonyOS打造开放合规的广告生态 - Banner广告