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

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

​​题目来源:

        leetcode题目,网址:236. 二叉树的最近公共祖先 - 力扣(LeetCode)

解题思路:

        分别获得从根节点到两个目标节点的链路,寻找到最后一个相同节点即可。

解题代码:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {queue<TreeNode*> pLine;queue<TreeNode*> qLine;getLine(root,p,pLine);getLine(root,q,qLine);while(pLine.size()<qLine.size()){qLine.pop();}while(qLine.size()<pLine.size()){pLine.pop();}while(pLine.front()!=qLine.front()){pLine.pop();qLine.pop();}return pLine.front();}bool getLine(TreeNode* root, TreeNode* target,queue<TreeNode*>& line){if(root==nullptr){return false;}else if(root==target || getLine(root->left,target,line) || getLine(root->right,target,line)){line.push(root);return true;}return false;}
};
 

总结:

        官方题解给出了两种解法。第一种是递归,自底向上逐个判断该节点是否为目标节点。第二种解法是哈希表。获得 p 节点的链路后,从 q 节点开始寻找第一个在 p 的链路中的父节点。


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

相关文章:

  • ETL是什么,有哪些ETL工具?就业前景如何?
  • 无人机系统组装与调试,多旋翼无人机组装与调试技术详解,无人机飞控系统原理
  • Log360,引入全新安全与风险管理功能,助力企业积极抵御网络威胁
  • 【开源】JAVA+Vue.js实现高校实验室管理系统
  • Flink CDC 与 Kafka 集成:Snapshot 还是 Changelog?Upsert Kafka 还是 Kafka?
  • 极智一周 | 国产CPU系列汇总、鲲鹏、飞腾、平头哥 And so on
  • PgSQL技术内幕 - case when表达式实现机制
  • Android9~Android13 某些容量SD卡被格式化为内部存储时容量显示错误问题的研究与解决方案
  • 音视频色彩:RGB/YUV
  • MySQL之密码策略和用户授权
  • 电脑通电自启动设置
  • hive表加字段
  • 从零构建Hugo主题 - I
  • 【HarmonyOS应用开发】HTTP数据请求(十四)
  • MongoDB聚合: $sortByCount
  • FY-SA-20237·8-AI‘sIQ
  • react将选中文本自动滑动到容器可视区域内
  • Rust语言入门小结(第1篇)
  • 前端实现支付跳转以及回跳
  • 黑豹程序员-封装组件-Vue3 setup方式子组件传值给父组件
  • PySpark(三)RDD持久化、共享变量、Spark内核制度,Spark Shuffle、Spark执行流程
  • PCIE Order Set
  • nginx upstream server主动健康检测模块ngx_http_upstream_check_module 使用和源码分析(下)
  • 基于SSM的网络在线考试系统(有报告)。Javaee项目。ssm项目。
  • 【Flink状态管理(二)各状态初始化入口】状态初始化流程详解与源码剖析
  • python+flask人口普查数据的应用研究及实现django
  • C语言:函数
  • jmeter-问题一:关于线程组,线程数,用户数详解
  • golang 通过 cgo 调用 C++ 库
  • 使用 IDEA 开发一个简单易用的 SDK