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

LeetCode236题:二叉树的最近公共祖先

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

百度百科中最近公共祖先的定义为:“对于有根树 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

class Solution {
public:
bool find(TreeNode* root,TreeNode*x,stack<TreeNode*>&path)
{ if(root==nullptr) return false;path.push(root);if(root==x) return true;if(find(root->left,x,path)) return true;if(find(root->right,x,path)) return true;path.pop();//左右都为空没找到肯定不是这条路了,那就pop掉return false;}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {stack<TreeNode*>ppath,qpath;find(root,p,ppath);find(root,q,qpath);//找出p q的路径while(ppath.size()!=qpath.size())//先让两条路径相同大小{ if(ppath.size()>qpath.size()) ppath.pop();else qpath.pop();}
while(ppath.top()!=qpath.top())//开始找祖先
{ppath.pop();qpath.pop();
}return ppath.top();}};

http://www.lryc.cn/news/450386.html

相关文章:

  • 虚谷中使用PL/SQL改变模式下所有表的大小写
  • 数据挖掘的基本步骤和流程解析:深入洞察与策略实施
  • BCJR算法——卷积码的最大后验译码
  • 系统架构设计师论文《论SOA在企业集成架构设计中的应用》精选试读
  • ceph rgw 桶分片之reshard
  • 开放原子开源基金会网站上的开源项目Opns存在缓冲区溢出缺陷
  • 未来前端发展方向:深度探索与技术前瞻
  • 前端工程规范-2:JS代码规范(Prettier + ESLint)
  • Tomcat为什么要打破双亲委派?怎么保证安全
  • 【C++篇】启航——初识C++(下篇)
  • Elasticsearch快速入门
  • uniapp微信小程序遮罩层u-popup禁止底层穿透
  • 【RocketMQ】秒杀设计与实现
  • 高级架构师面试题
  • phpstudy简易使用
  • ubuntu server 常用配置
  • [Day 82] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • 微信小程序map组件自定义气泡真机不显示
  • 数据结构之链表(2),双向链表
  • STL之list篇(下)(从底层分析实现list容器,逐步剥开list的外表)
  • 视频去水印的3个技巧,教你无痕去水印
  • LSTM模型改进实现多步预测未来30天销售额
  • 八LAMP搭建
  • Windows——解除Windows系统中文件名和目录路径的最大长度限制
  • 黑名单与ip禁令是同一个东西吗
  • FuTalk设计周刊-Vol.075
  • PE节表中是否存在misc.VirtualSize 比SizeofRawData还要大的情况
  • 栈及笔试题
  • 【工程测试技术】第3章 测试装置的基本特性,静态特性和动态特性,一阶二阶系统的特性,负载效应,抗干扰性
  • ireport 5.1 中文生辟字显示不出来,生成PDF报字体找不到