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

力扣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.lryc.cn/news/331705.html

相关文章:

  • FLink学习(三)-DataStream
  • Failed to resolve import “Home/components/HomeNew.vue“. Does the file exist?
  • 《价值》-张磊-高瓴资本-3-建立人脉和信任;顺应趋势,把握机遇;
  • 游戏引擎中的物理应用
  • 复现k8s黄金票据学习
  • 08-JavaScript BOM定时器及JS动画
  • 边缘计算盒子与云计算:谁更适合您的业务需求?
  • 浅聊什么是Redis?
  • java算法day43 | ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零
  • 练气第六天
  • 认识 Redis 与 分布式
  • Linux初学(十二)AWK进阶
  • 文字识别 Optical Character Recognition,OCR CTC STN
  • 四、MySQL读写分离之MyCAT
  • 通讯录项目实现
  • xss相关知识点与绕过思路总结
  • 深入解析语言模型:原理、实战与评估
  • Elasticsearch 的索引优化常规项
  • 【JavaParser笔记01】JavaParser解析Java源代码中的类信息(javadoc注释、类​​​​​​​名称)
  • Stable Diffusion扩散模型【详解】小白也能看懂!!
  • 关于rabbitmq的prefetch机制
  • 机器学习介绍
  • OpenCV4.9开发之Window开发环境搭建
  • DDD 中的实体和值对象有什么区别?
  • 算法-最值问题
  • Go 性能压测工具之wrk介绍与使用
  • 数学思想论(有目录)
  • C++的并发世界(五)——线程状态切换
  • C语言——指针
  • 手搓二分查找