1379. 找出克隆二叉树中的相同节点

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

题目描述

给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 original 中的目标节点 target

其中,克隆树 cloned 是原始树 original 的一个 副本

请找出在树 cloned 中,与 target 相同 的节点,并返回对该节点的引用(在 C/C++ 等有指针的语言中返回 节点指针,其他语言返回节点本身)。

注意: 你 不能 对两棵二叉树,以及 target 节点进行更改。只能 返回对克隆树 cloned 中已有的节点的引用。

示例 1:

输入: tree = [7,4,3,null,null,6,19], target = 3
输出: 3
解释: 上图画出了树 original 和 cloned。target 节点在树 original 中,用绿色标记。答案是树 cloned 中的黄颜色的节点(其他示例类似)。

示例 2:

输入: tree = [7], target =  7
输出: 7

示例 3:

输入: tree = [8,null,6,null,5,null,4,null,3,null,2,null,1], target = 4
输出: 4

提示:

  • 树中节点的数量范围为 [1, 10^4] 。
  • 同一棵树中,没有值相同的节点。
  • target 节点是树 original 中的一个节点,并且不会是 null 。

进阶: 如果树中允许出现值相同的节点,将如何解答?

解题思路

因为这道题目中二叉树的值都是唯一的,所以我们可以直接判断值是否相等来获取到相同的节点。

  • 递归遍历二叉树
  • 判断节点值是否和木匾节点值相等
  • 将找到的节点返回

如果已经找到目标节点或者传入的节点不存在,则直接返回。如果当前节点的值与target的值相等,那么将该节点存储在外部变量res中,表示找到了目标节点。
如果当前节点的值不是目标值,那么递归地在当前节点的左子树和右子树中查找目标节点。

函数开始时初始化res为null,表示还没有找到目标节点。然后调用getNode函数,从cloned树的根节点开始递归搜索。最后,返回res,它将是找到的目标节点,或者在没有找到目标节点的情况下仍然是null。

AC代码

/*** Definition for a binary tree node.* function TreeNode(val) {*     this.val = val;*     this.left = this.right = null;* }*/
/*** @param {TreeNode} original* @param {TreeNode} cloned* @param {TreeNode} target* @return {TreeNode}*/var getTargetCopy = function (original, cloned, target) {let res = null;const getNode = (node) => {if (res || !node) return;if (node.val === target.val) res = node;getNode(node.left);getNode(node.right);};getNode(cloned);return res;
};

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

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

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

相关文章

大模型量化技术-AWQ

大模型量化技术-AWQ 在2023年6月,Ji Lin等人发表了论文AWQ:Activation-aware Weight Quantization for LLM Compression and Acceleration。 这篇论文详细介绍了一种激活感知权重量化算法,可以用于压缩任何基于 Transformer 的语言模型,同时只有微小的性能下降。关于 AWQ 算…

Golang和Java的对决:从设计理念到工具链的全面比较

文章目录 使用率排名Golang和Java设计理念语法和类型系统并发处理资源消耗生态系统和工具链 结语 使用率排名 据最新的2024年3月 Tiobe 编程语言排行榜,目前 Golang 的使用率排名为第8呈上升趋势,Java 的使用率排名为第4呈下降趋势 2024年3月2023年3月…

Python搭建编程环境—安装Python3解释器

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:零基础学Python 💬个人格言:不断的翻越一…

深入浅出,解析什么是网络切片

一、网络切片诞生背景? 网络切片的需求来自于业务对网络提出的差异化要求,要求一张物理网络上对不同的业务进行差异化的保障。 网络切片是5G核心网最重要的技术之一,也是网络即服务的直接体现,网络切片本身就是产品和服务。 二…

C++重载和模板

重载与模板 函数模板可以被另一个模板或一个普通非模板函数重载。 与往常一样,名字相同的函数必须具有不同数量或类型的参数。 如果涉及函数模板,则函数匹配规则会在以下几方面受到影响: 对于一个调用,其候选函数包括所有模板…

SAP:无法在插件模式 HTTP 中处理消息 E ** xxx

问题描述:利用post方式接口,返回信息为 无法在插件模式 HTTP 中处理消息 E ** xxx ,如何排查是因为什么问题导致的? 解决方法: 事务码:SE91, 输入消息类,消息编号,点击显示,查看报…

Sketch webView方式插件开发技术总结

Sketch作为一款广受欢迎的矢量图形设计工具,其功能远不止基础的矢量设计,它的真正实力部分源自其丰富的插件生态系统。Sketch向开发者提供了官方的第三方插件接口,这使得整个社区能够创建和分享众多功能各异的插件,极大地拓展了Sk…

vue3+ts 调用接口,数据显示

数据展示 (例:展示医院等级数据,展示医院区域数据同理。) 接口文档中,输入参数 测试一下接口,发请求 看是否能够拿到信息 获取接口,api/index.ts 中 /home/index.ts // 统一管理首页模块接口 i…

突破校园网限速:使用 iKuai 多拨分流负载均衡 + Clash 代理(内网带宽限制通用)

文章目录 1. 简介2. iKuai 部署2.1 安装 VMware2.2 安装 iKuai(1) 下载固件(2) 安装 iKuai 虚拟机(3) 配置 iKuai 虚拟机(4) 配置 iKuai(5) 配置多拨分流 2.3 测试速度 3. Clash 部署3.1 准备工作(1) 配置磁盘分区(2) 安装 Docker(3) 安装 Clash(4) 设置代理 1. 简介 由于博主…

JavaScript(六)---【回调、异步、promise、Async】

零.前言 JavaScript(一)---【js的两种导入方式、全局作用域、函数作用域、块作用域】-CSDN博客 JavaScript(二)---【js数组、js对象、this指针】-CSDN博客 JavaScript(三)---【this指针,函数定义、Call、Apply、函数绑定、闭包】-CSDN博客 JavaScript(四)---【执…

Makefile:调用shell脚本和嵌套调用多项目编译(九)

1、Makefile中调用shell脚本 Makefile中可以通过使用$(shell 指令)的方式调用shell脚本a指令:输出当前文件夹下的所有文件b指令:输出当前路径c指令:如果当前目录下不存在abc文件那么创建一个abc的文件 a$(shell ls ./) b$(shell pwd) filen…

MySQL 学习心得和知识总结(五)|MySQL的一般查询日志(general log)

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…