力扣1379---找出克隆二叉树的相同节点(Java、DFS、简单题)

目录

题目描述:

思路描述:

代码:

        (1):

        (2):


题目描述:

给你两棵二叉树,原始树 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, 104] 。
  • 同一棵树中,没有值相同的节点。
  • target 节点是树 original 中的一个节点,并且不会是 null 。

思路描述:

        属于力扣简单题,直接使用深度优先遍历即可。

        该题目中力扣官方还给出了一个提问:“进阶:如果树中允许出现值相同的节点,将如何解答?”,如果是这样的话,我们直接将两棵树都遍历一下就可以。

代码:

        (1):

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/class Solution {public final TreeNode getTargetCopy(final TreeNode original, final TreeNode cloned, final TreeNode target) {if(original==null || cloned==null){return null;}if(cloned.val==target.val){return cloned;}TreeNode leftNode=getTargetCopy(original,cloned.left, target);TreeNode rightNode=getTargetCopy(original,cloned.right, target);return leftNode==null?rightNode:leftNode;}
}

        (2):

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/class Solution {public final TreeNode getTargetCopy(final TreeNode original, final TreeNode cloned, final TreeNode target) {if(original==null || cloned==null){return null;}if(original==target){return cloned;}TreeNode nodeLeft=getTargetCopy(original.left,cloned.left, target);TreeNode nodeRight=getTargetCopy(original.right,cloned.right, target);return nodeLeft==null?nodeRight:nodeLeft;}
}

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

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

相关文章

蓝牙学习九(定向广播 ADV_DIRECT_IND)

一、简介 广播类型有如下: 非定向可连接广播(ADV_IND)。可连接的非定向广播,表示当前设备可以接受任何设备的连接请求。 定向可连接广播(ADV_DIRECT_IND)。可连接的定向广播,设备不能被主动扫描…

Kotlin:常用标准库函数(let、run、with、apply、also)

一、let 扩展函数 Kotlin标准库函数let可用于范围确定和空检查。当调用对象时,let执行给定的代码块并返回其最后一个表达式的结果。对象可以通过引用(默认情况下)或自定义名称在块中访问。 let扩展函数源码 let.kt文件代码 fun main() {println("isEmpty $is…

`std::ref`的作用是将一个对象包装成一个引用包装器

std::ref是C标准库中的一个函数模板&#xff0c;位于<functional>头文件中&#xff0c;通常与std::bind一起使用。std::ref的作用是将一个对象包装成一个引用包装器&#xff0c;使得在函数对象的传递中能够以引用的方式传递对象&#xff0c;而不是进行对象的拷贝。 具体…

求区间和

题源 记录一哈前缀和吧 题目描述 给定 n 个正整数组成的数列 a1​,a2​,⋯,an​ 和 m 个区间[li​,ri​]&#xff0c;分别求这 m 个区间的区间和。 对于所有测试数据&#xff0c;m≤10^5,ai​≤10^4 输入格式 第一行&#xff0c;为一个正整数 n 。 第二行&#xff0c;为 n 个正…

Stable Diffusion扩散模型【详解】小白也能看懂!!

文章目录 1、Diffusion的整体过程2、加噪过程2.1 加噪的具体细节2.2 加噪过程的公式推导 3、去噪过程3.1 图像概率分布 4、损失函数5、 伪代码过程 此文涉及公式推导&#xff0c;需要参考这篇文章&#xff1a; Stable Diffusion扩散模型推导公式的基础知识 1、Diffusion的整体…

C++求1到100相加,简单案例

简单案例 #include"iostream" /*如果是iostream.h就可以省略using namespace std*/ using namespace std; /* 指标识符的各种可见范围 */ void main() { int i1,sum0; while(i<100) { sumi; /*sumsum (i)*/ } cout<<"sum"&…

【Unity 实用工具篇】| Unity中 实现背景模糊效果,简单易用

前言【Unity 实用工具篇】| Unity 实现背景模糊效果,简单易用一、实现背景模糊效果1.1 介绍1.2 效果展示1.3 使用说明及下载二、插件资源简单介绍2.1 导入下载好的资源2.2 功能介绍2.2.1 捕获特效2.2.2 高级选项

【Vue】watch监听复杂数据,新值与旧值一样

问题 watch监听复杂数据&#xff0c;例如数组&#xff0c;旧值与新值一样 解决方案 监听回调里返回新数组&#xff0c;新、旧数组地址改变&#xff0c;得到的值也就不一样&#xff0c;例↓ ()>[...data] 码 test.js // 数据 const musicList ref([{ id: 540000200805…

00-JAVA基础-动态编译

动态编译 JAVA 6 引入了动态编译机制。Java 动态编译是指在运行时将Java源代码编译成可执行的字节码。这通常使用Java的内置编译器API javax.tools.JavaCompiler 来实现。 动态编译的应用场景 可以做一个浏览器编写java代码&#xff0c;上传服务器编译和运行的在线测评系统服…

继承.Java

目录 1&#xff0c;概述 1.1继承的含义 1.2什么时候用继承 1.3继承的好处 1.4继承的特点 2&#xff0c;继承的格式 3&#xff0c;可以继承哪些内容 4&#xff0c;成员方法和成员变量的访问特点 5&#xff0c;构造方法的访问特点 6&#xff0c;this&#xff0c;super…

前端三剑客 —— CSS (第一节)

目录 CSS 什么是CSS CSS的几种写法&#xff1a; 行内样式 内嵌样式 外链样式 import 加载顺序 CSS选择器*** 基本选择器 ID选择器 标签选择器 类选择器 通用选择器 包含选择器 上节内容中提到了 前端三剑客 —— HTML 超文本标记语言&#xff0c;这节内容 跟大家…

每日一题 --- 有效的括号[力扣][Go]

有效的括号 题目&#xff1a;20. 有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序…

大厂面试之【Redis持久化机制】 - RDB和AOF概述及应用配置

文章目录 Redis持久化1. RDB(Redis DataBase)1.1 概述1.2 配置应用 2. AOF(Append Only File)2.1 概述2.2 配置应用 Redis持久化 先上结论&#xff1a;Redis持久化操作分为rdb以及aof&#xff0c;但是前者已经够用 1. RDB(Redis DataBase) 1.1 概述 rdb保存的是dump.rdb文件在指…

WEB漏洞挖掘详细教程--用户输入合规性(sql注入测试)

前置教程&#xff1a;WEB漏洞挖掘&#xff08;SRC&#xff09;详细教程--信息收集篇-CSDN博客 WEB漏洞挖掘&#xff08;SRC&#xff09;详细教程--身份认证与业务一致性-CSDN博客 WEB漏洞挖掘&#xff08;SRC&#xff09;详细教程--业务数据篡改-CSDN博客 2.4 用户输入合规性…

方差分析注意事项

进行方差分析时&#xff0c;有一些注意事项需要注意&#xff1a; 1. 数据的正态性&#xff1a;方差分析对数据的正态性有要求&#xff0c;确保数据符合正态分布是进行方差分析的前提之一。 2. 方差齐性&#xff1a;方差分析要求各组数据的方差相等&#xff0c;即方差齐性。可…

MCRNet:用于乳腺超声成像语义分割的多级上下文细化网络

这里写目录标题 摘要引言方法 摘要 由于对比度差、目标边界模糊和大量阴影的不利影响&#xff0c;乳腺超声成像中的自动语义分割仍然是一项具有挑战性的任务。最近&#xff0c;具有U形的卷积神经网络&#xff08;CNN&#xff09;在医学图像分割中表现出相当好的性能。然而&…

【C++ STL迭代器】iterator

文章目录 【 1. 迭代器的属性 】【 2. 不同容器支持的迭代器 】【 3. 迭代器的定义方式 】【 4. 实例 】4.1 定义方式&#xff1a;正向迭代器和反向迭代器4.2 迭代器属性&#xff1a;前向迭代、双向迭代、随机迭代4.2 迭代器的遍历方法4.3 auto关键字 自动指定迭代器定义类型 背…

C++内存池

原理就是一个内存池内部拥有的空间为POOL_SIZE个自己。 #include<iostream>using namespace std;class DemoClass{ public:DemoClass() default;DemoClass(int i):data(i){}static void * operator new(size_t size);static void operator delete(void * p);virtual ~D…

【Qt】:常用控件(四:显示类控件)

常用控件 一.Lable二.LCD Number 一.Lable QLabel 可以⽤来显⽰⽂本和图⽚. 代码⽰例:显⽰不同格式的⽂本 代码⽰例:显⽰图⽚ 此时,如果拖动窗⼝⼤⼩,可以看到图⽚并不会随着窗⼝⼤⼩的改变⽽同步变化 为了解决这个问题,可以在Widget中重写resizeEvent函数。当用户把窗口从A拖…

点云的Python均值采样

一、代码 Python import numpy as np import open3d as o3ddef mean_sampling(point_cloud, num_samples=None, depth=None, method=knn, k=10):"""对点云进行均值下采样。:param point_cloud: Open3D PointCloud对象:param num_samples: (仅当method=knn时使…