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

(leetcode学习)236. 二叉树的最近公共祖先

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

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

示例 1:

输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1
输出:3
解释:节点 5 和节点 1 的最近公共祖先是节点 3 。

示例 2:

输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4
输出:5
解释:节点 5 和节点 4 的最近公共祖先是节点 5 。因为根据定义最近公共祖先节点可以为节点本身。

示例 3:

输入:root = [1,2], p = 1, q = 2
输出:1

提示:

  • 树中节点数目在范围 [2, 105] 内。
  • -109 <= Node.val <= 109
  • 所有 Node.val 互不相同
  • p != q
  • pq 均存在于给定的二叉树中。

跟着左神的视频课,参考了左神的解题方法,不过时间上打败30%,记录一下,以后提升。

TreeNode* find(TreeNode* cur){if(cur == NULL) return NULL;if(cur == Gp || cur == Gq) return cur;TreeNode* left = find(cur->left);TreeNode* right = find(cur->right);if(left != NULL && right != NULL){return cur;}return left == NULL ? right : left;}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {Groot = root;Gp = p;Gq = q;return find(root);}

一样的代码又提交了一遍,时间反而变少了,真的神奇

相关文章:

  • VAE、GAN与Transformer核心公式解析
  • 解决git每次push代码到github都需要输入用户名以及密码
  • 如何在 Windows 上安装并配置 VNC 远程连接树莓派,并结合Cpolar实现公网远程访问
  • Oracle(21)什么是聚集索引和非聚集索引?
  • SpringBoot整合SSE技术详解
  • 【环境变量】安装了一个软件,如何配置环境变量?
  • 代码随想录算法训练营Day 63| 图论 part03 | 417.太平洋大西洋水流问题、827.最大人工岛、127. 单词接龙
  • 实现图片懒加载
  • 使用Cce Cash混币器进行安全的ETH-USDT跨链兑换
  • 【办公软件】Office 2019以上版本PPT 做平滑切换
  • pytest的安装和介绍和 Exit Code 含义
  • IOS-05 Swift循环控制语句
  • 修复SteamUI.dll加载失败的指南,快速修复failed to load steamui.dll
  • 【Android】Fragment的添加
  • 【Golang 面试 - 基础题】每日 5 题(五)
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 10个确保微服务与容器安全的最佳实践
  • ES6简单总结(搭配简单的讲解和小案例)
  • exif信息对照
  • github从入门到放弃(1)
  • Git初体验
  • golang中接口赋值与方法集
  • Promise初体验
  • Redis字符串类型内部编码剖析
  • vue中实现单选
  • 从0到1:PostCSS 插件开发最佳实践
  • 从零搭建Koa2 Server
  • 大快搜索数据爬虫技术实例安装教学篇
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 马上搞懂 GeoJSON
  • 每天一个设计模式之命令模式
  • 人脸识别最新开发经验demo
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 通过npm或yarn自动生成vue组件
  • 微信支付JSAPI,实测!终极方案
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • mysql面试题分组并合并列
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #pragma once
  • (Java数据结构)ArrayList
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (十七)Flink 容错机制
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)汇编语言——简单程序
  • (一)UDP基本编程步骤
  • .dwp和.webpart的区别
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET CORE Aws S3 使用
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET LINQ 通常分 Syntax Query 和Syntax Method