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

一:题目

在这里插入图片描述
在这里插入图片描述

二:上码

/*** 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:/**思路:1.这里我们需要的是从底向上开始寻找最近的公共祖先,所以我们要用到后序遍历2.递归三部曲 (1):确定递归函数和返回值TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q)(2):确定递归终止条件当递归到叶节点时结束,或者是遇到我们要找的结点if(root == NULL || root == q || root == p) return root;(3):递归体我们需要用两个结点接住左子树和右子树返回的结点了  做后续的逻辑处理TreeNode* left = lowestCommonAncestor( root->left,  p,  q)TreeNode* right = lowestCommonAncestor(root->right, TreeNode* p,  q)if(left != NULL && right != NULL) return root;if(left != NULL && right == NULL) retrun left;return right;*/TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root == NULL || root == q || root == p) return root;TreeNode* left = lowestCommonAncestor(root->left,p,q);TreeNode* right = lowestCommonAncestor(root->right,p,q);if(left != NULL && right != NULL) return root;if(left != NULL && right == NULL) return left;//如果左子树,没有找到目标结点,//而目标结点在右子树 出现了则要返回return right;}
};

在这里插入图片描述
对于递归我是真的丝毫没有抵抗力啊 太他**的变态了 我的理解过程全靠人脑压栈 还是做题少 对递归没感觉
求求求递归你了 让我有点感觉吧!!

人脑压栈过程:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进击吧! Blazor !第二期 页面制作

Blazor 是一个 Web UI 框架,可通过 WebAssembly 在任意浏览器中运行 .Net 。Blazor 旨在简化快速的单页面 .Net 浏览器应用的构建过程,它虽然使用了诸如 CSS 和 HTML 之类的 Web 技术,但它使用 C#语言和 Razor 语法代替 JavaScrip…

「软件项目管理」一文详解软件项目管理概述

一文详解软件项目管理概述🚵前言🤽一、项目与软件项目1、项目的定义2、项目的特征3、项目与日常运作举例(1)判断哪些活动是项目(2)举例结果(3)项目与日常运作区别总结4、软件项目的特…

初识ABP vNext(9):ABP模块化开发-文件管理

点击上方蓝字"小黑在哪里"关注我吧创建模块模块开发应用服务运行模块单元测试模块使用前言在之前的章节中介绍过ABP扩展实体,当时在用户表扩展了用户头像字段,用户头像就涉及到文件上传和文件存储。文件上传是很多系统都会涉及到的一个基础功能…

「offer来了」浏览器原理被问懵?5大知识板块巩固你的http知识体系(3.6w字)

「面试专栏」前端面试之浏览器原理篇🏔️序言🌄一、http和https协议(一)http和https之间的关系🧭1、http和https是什么?2、http和https的区别(二)http协议🧭1、http1.0、…

使用Azure DevOps Pipeline实现.Net Core程序的CD

上一次我们讲了使用Azure DevOps Pipeline实现.Net Core程序的CI。这次我们来演示下如何使用Azure DevOps实现.Net Core程序的CD。实现本次目标我们除了Azure DevOps外还需要:一台安装了Docker的主机一个 Docker Hub 账号上一次我们的CI实现了:发布>编…

TCP四次挥手(详解)

一:TCP四次挥手 1:图示 二:TCP四次挥手的过程 所谓的四次挥手即TCP连接的释放(解除)。连接的释放必须是一方主动释放,另一方被动释放。挥手之前主动释放连接的客户端结束ESTABLISHED阶段。随后开始“四次挥手”: a:首先客户端想要释放连接&#xff0c…

「软件项目管理」项目初始——项目确立与生存期模型

「软件项目管理」项目初始阶段——项目确立与生存期模型🛰️序言Preface🚀一、项目评估1、评估内容2、净利润与投资回报率3、举例阐述🪐二、项目立项1、立项流程2、Make or Buy决策3、Make or Buy决策实例🛸三、项目招投标1、项目…

双城生活,一种相对无奈且幸福的选择

这是头哥侃码的第215篇原创我小时候经常被人问到一个问题:“你喜欢夏天还是冬天?”“夏天啊!因为夏天可以有两个月的暑假,而且还可以玩水,还有清凉的盐水棒冰、短裤和凉拖,还可以在空调间里打游戏&#xff…

leetcode450. 删除二叉搜索树中的节点(详解)

一:题目 二:上码 1.确定递归函数和参数 TreeNode* deleteNode(TreeNode* root, int key) 这里的返回参数 我们也用一个指针接住,反正我们最终是返回的整棵树(如果没找到那就是空) 2.确定递归函数的终止条件 if(root NULL) return root; 3.确…

「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识

「面试专栏」前端面试之操作系统篇🎹序言🎸一、思维导图🎺二、常见面试题1、进程和线程以及它们的区别2、进程间通信的几种方式(1)管道(pipe)及命名管道(named pipe)(2)信号(signal)&#xff08…

推荐一个IT老鸟肝了2月有余的免费开源WPF企业级开发框架

JHRS一个新学WPF的IT老鸟,肝了2个月做了这么一个WPF企业级开发框架,站长clone学习,觉得甚是不错。这是一个使用了Prism搭建的插件式框架,封装了DataGrid的使用,使整个框架子模块简单易学、易扩展,特别是作者…

「offer来了」从基础到进阶原理,从vue2到vue3,48个知识点保姆级带你巩固vuejs知识体系

「面试专栏」前端面试之vuejs篇🖼️序言🎙️一、vue2.x基础知识预备📻二、vue2.x基础知识常见面试题1、请说出vue.cli项目中src目录每个文件夹和文件的用法?2、vue.cli中怎样使用自定义的组件?有遇到过哪些问题&#x…

.NET Core 下使用 Apollo 配置中心

“Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务…

「offer来了」从基础配置到高级配置,16大知识点带你巩固webpack知识体系

「面试专栏」前端面试之Webpack篇🧩序言🎨一、基础知识学习🎲二、常见面试题汇总🎯三、构建和打包1、前端代码如何进行构建和打包?2、前端为何要进行打包和构建?3、webpack原理🎰四、模块相关1、…

进击吧!Blazor!第一期回顾

Blazor 是一个 Web UI 框架,可通过 WebAssembly 在任意浏览器中运行 .Net 。Blazor 旨在简化快速的单页面 .Net 浏览器应用的构建过程,它虽然使用了诸如 CSS 和 HTML 之类的 Web 技术,但它使用 C#语言和 Razor 语法代替 JavaScrip…

《五分钟商学院》个人篇学习总结(下)

【商业知识】| 作者 / Edison Zhou这是EdisonTalk的第286篇原创内容商业篇聚焦的是我们与外部的关系,管理篇聚焦的是我们与内部的关系,而个人篇聚焦的则是我们与自己的关系。与自己斗,其乐无穷,本文是个人篇的下半部分学习总结。上…

「软件项目管理」软件项目范围计划——需求管理与任务分解

软件项目范围计划——需求管理与任务分解序言一、软件需求定义及层次1、定义2、层次二、软件需求管理过程1、管理过程2、需求获取3、需求分析4、需求规格编写5、需求验证6、需求变更(1)需求变更管理的主要工作(2)需求变更控制流程…

leetcode106. 从中序与后序遍历序列构造二叉树

一:题目 二:思路 例子:中序[9,3,15,20,7];后序[9,15,7,20,3] 1.我们先选取后续的最后的结点3(其是根节点) 2.我们在中序序列中用上一步求出的根节点3并记录其在中序数组中的位置rootin,然后我们就可以 求出 左子树的结点个数(rootin - leftin…

「offer来了」快来关注这些性能优化问题

「面试专栏」前端面试之性能优化篇💬序言💯思维导图抢先看👁️‍🗨️一、html、css、js、jq优化1、针对HTML,如何优化性能?2、针对CSS,如何优化性能?3、哪些方法能提升移动端CSS3动画…

不宜过分炒作第三代半导体材料弯道超车

目前,本土晶圆大厂与台积电在技术水平上的差距是非常明显的。就市场份额来说,台积电的市场份额超过50%,而本土晶圆大厂的市场份额大约是台积电的十分之一。在技术水平上,本土晶圆大厂也和台积电这样的大厂有一定差距。目前台积电7…