【LeetCode每日一题】——1379.找出克隆二叉树中的相同节点

news2025/1/15 3:17:34

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目注意】
  • 六【题目示例】
  • 七【题目提示】
  • 八【题目进阶】
  • 九【解题思路】
  • 十【时间频度】
  • 十一【代码实现】
  • 十二【提交结果】

一【题目类别】

  • 广度优先搜索

二【题目难度】

  • 简单

三【题目编号】

  • 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 , 1 0 4 ] 。 树中节点的数量范围为 [1, 10^4] 。 树中节点的数量范围为[1,104]
  • 同一棵树中,没有值相同的节点。 同一棵树中,没有值相同的节点。 同一棵树中,没有值相同的节点。
  • t a r g e t 节点是树 o r i g i n a l 中的一个节点,并且不会是 n u l l 。 target 节点是树 original 中的一个节点,并且不会是 null 。 target节点是树original中的一个节点,并且不会是null

八【题目进阶】

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

九【解题思路】

  • 此题没有难度,直接在克隆后的二叉树中进行广度优先搜索(BFS)target节点即可
  • 如果最后找到了,返回克隆后的二叉树中的target节点
  • 如果找不到,返回空

十【时间频度】

  • 时间复杂度: O ( n ) O(n) O(n) n n n为传入的二叉树的节点个数
  • 空间复杂度: O ( n ) O(n) O(n) n n n为传入的二叉树的节点个数

十一【代码实现】

  1. Java语言版
/**
 * 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) {
        return bfs(cloned, target);    
    }

    public TreeNode bfs(TreeNode root, TreeNode target){
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while(!queue.isEmpty()){
            TreeNode temp = queue.poll();
            if(temp.val == target.val){
                return temp;
            }
            if(temp.left != null){
                queue.add(temp.left);
            }
            if(temp.right != null){
                queue.add(temp.right);
            }
        }
        return null;
    }

}
  1. Python语言版
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def getTargetCopy(self, original: TreeNode, cloned: TreeNode, target: TreeNode) -> TreeNode:
        return self.bfs(cloned, target)
    
    def bfs(self, root: TreeNode, target: TreeNode) -> TreeNode:
        queue = [root]
        while queue:
            temp = queue.pop(0)
            if temp.val == target.val:
                return temp
            if temp.left:
                queue.append(temp.left)
            if temp.right:
                queue.append(temp.right)
        return None
  1. C++语言版
/**
 * 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* getTargetCopy(TreeNode* original, TreeNode* cloned, TreeNode* target) {
        return bfs(cloned, target);
    }

    TreeNode* bfs(TreeNode* root, TreeNode* target){
        queue<TreeNode*> q;
        q.push(root);
        while(!q.empty()){
            struct TreeNode* temp = (struct TreeNode*)malloc(sizeof(struct TreeNode));
            temp = q.front();
            q.pop();
            if(temp->val == target->val){
                return temp;
            }
            if(temp->left != NULL){
                q.push(temp->left);
            }
            if(temp->right != NULL){
                q.push(temp->right);
            }
        }
        return NULL;
    }

};

十二【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. Python语言版
    在这里插入图片描述

  3. C++语言版
    在这里插入图片描述

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

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

相关文章

分享一下微信小程序的文章中怎么添加营销活动

在数字化时代&#xff0c;小程序已经成为企业营销的重要工具。通过小程序&#xff0c;企业可以提供更加便捷、高效的服务&#xff0c;吸引更多的用户和客户。本文将以小程序营销活动为主题&#xff0c;介绍如何在小程序文章中加入营销活动&#xff0c;提高品牌知名度和销售额。…

DAY32 122. 买卖股票的最佳时机 II + 55. 跳跃游戏 + 45.跳跃游戏 II

122. 买卖股票的最佳时机 II 题目要求&#xff1a;给定一个数组&#xff0c;它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;。 注意&#xff1a;你不能同时…

基于springboot实现漫画网站管理系统项目【项目源码+论文说明】计算机毕业设计

基于Springboot实现漫画网站管理系统演示 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包括…

Docker从入门到实战

Docker基本概念 1、解决的问题 1、统一标准 应用构建 ○ Java、C、JavaScript ○ 打成软件包 ○ .exe ○ docker build … 镜像应用分享 ○ 所有软件的镜像放到一个指定地方 docker hub ○ 安卓&#xff0c;应用市场应用运行 ○ 统一标准的 镜像 ○ docker run 容器化技术 …

Snowflake雪花算法

文章目录 分布式ID一、雪花算法起源二、雪花算法的原理三、java实现雪花算法四、常见问题总结 分布式ID 分布式ID&#xff0c;也称为全局唯一ID&#xff0c;是在分布式系统中用于标识数据的唯一标识符。随着业务量的不断扩展&#xff0c;传统的UUID和数据库自增ID无法满足需求…

Linux下的IMX6ULL——IMX6ULL Pro开发板基本操作(二)

目录&#xff1a; 前面我们已经配置好了环境&#xff0c;下载好了软件&#xff0c;下面让我们对我们使用的开发板有给简单的了解吧&#xff0c;IMX6ULL Pro开发板基本操作是必不可少的一大环节&#xff0c;下面让我们从它的硬件资源&#xff0c;软件资源等一系列开发板的基础操…

医院多维度综合绩效考核系统源码 商业项目源码,支持二次开发

医院多维度综合绩效考核系统源码 商业项目源码&#xff0c;支持二次开发 采用多维度综合绩效考核的形式&#xff0c;针对院内实际情况分别对工作量、KPI指标、科研、教学、管理等进行全面考核。医院可结合实际需求&#xff0c;对考核方案中各维度进行灵活配置&#xff0c;对各维…

Kubernetes-进阶(Pod生命周期/调度/控制器,Ingress代理,数据存储PV/PVC)

Kubernetes-进阶 Pod详解 每个Pod中都可以包含一个或多个容器&#xff0c;这些容器可以分两类 用户程序所在容器&#xff0c;数量用户决定Pause容器&#xff0c;这是每个Pod都会有的一个根容器&#xff0c;它的作用有两个 可以以它为依据&#xff0c;评估整个Pod的健康状态可以…

打印机提示“需要用户干预”解决方法

在计算机管理中&#xff0c;点击“服务和应用程序”中的“服务”&#xff1b; 3、在右侧找到“Print Spooler”服务&#xff0c;点击停止此服务&#xff08;不要退出此页面&#xff0c;后面会用&#xff0c;最小化即可&#xff09;&#xff1b; 4、按WINR&#xff0c;输入“spo…

海信商用显示出海提速,在参与共建“一带一路”中成长

2023年是中国“一带一路”倡议提出十周年。十年来&#xff0c;“一带一路”建设取得了实打实、沉甸甸的重大历史性成就&#xff0c;成为深受欢迎的国际公共产品和国际合作平台。丰硕成果的背后&#xff0c;离不开广大企业的积极参与与担当作为。作为较早出海的中国品牌之一&…

发现一款好用的数据库安全风险扫描工具-DPEasy,推荐给大家!

数据库安全治理是确保企业数据安全的关键任务&#xff0c;然而&#xff0c;许多企业在实际操作中面临着多种挑战。通过深入沟通交流和实地分析&#xff0c;我们发现企业在数据库安全治理过程中主要受到以下问题困扰&#xff1a;外部人员风险、账号权限管理困难、内部业务复杂以…

安美数字酒店宽带运营系统SQL注入漏洞复现 [附POC]

文章目录 安美数字酒店宽带运营系统SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 安美数字酒店宽带运营系统SQL注入漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非…

教你看懂Web 3.0:未来的互联网

众所周知&#xff0c;互联网已经成为我们日常生活的一部分&#xff0c;我们用它来搜索信息、社交、购物&#xff0c;甚至观看视频和听音乐。但你是否曾经想过&#xff0c;未来的互联网会是什么样子&#xff1f;让我们来谈谈Web 3.0&#xff0c;它是互联网的下一个大版本&#x…

BUGKU - 渗透测试1

场景1 源代码 场景2 admin 进入后台 账号密码admin admin 场景3 这里确实没想到。。。。 去php执行的地方 然后打开开发者工具进行抓包 发现执行后是存入php文件 我们写入一句话即可 这里我上传哥斯拉链接即可 场景4 根据提示 去找到数据库链接功能 场景5 PWN题目。…

k8s安装可视化界面

执行以下命令&#xff08;需要翻墙&#xff09;&#xff1a; kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml 或者用我文章提供的文件&#xff0c;执行 kubectl apply -f dashboard.xml 添加可访问地址 此时可…

融云AIGC专题:高知识密度与大数据处理双向奔赴的「金融大模型」

融云出海方案全线升级 点击上方小程序报名「爱嗨游」线上发布会 “怎么用大语言模型去提升生产效率和服务表现&#xff1f;”在时代交替之际&#xff0c;这是每个行业都要回答的问题。关注【融云 RongCloud】&#xff0c;了解协同办公平台更多干货。 而新技术的渗透不会在所有…

达芬奇MacOS最新中文版 DaVinci Resolve Studio 18中文注册秘钥

DaVinci Resolve Studio 18是一款专业的视频编辑软件&#xff0c;它具有多种强大的功能。首先&#xff0c;它提供了丰富的视频剪辑工具&#xff0c;如剪切、复制、粘贴、剪辑、缩放和移动等&#xff0c;使用户可以轻松地剪辑和组合视频素材。其次&#xff0c;该软件还支持多个轨…

【嵌入式-Linux】安装实时内核

原文链接&#xff1a;Docs 所有内容链接&#xff1a;博客学习目录_Howe_xixi的博客-CSDN博客 参考链接&#xff1a;Ubuntu 18.04安装 RT-PREEMPT 实时内核及补丁【过程记录】_fully preemptible kernel(rt)_黄小白的进阶之路的博客-CSDN博客 Ubuntu20.04编译Linux内核_zstd: n…

1024程序员节,一个ETL工程师的日常工作

“1024这个数字对程序员来说为什么很特别&#xff1f;” 这是因为 计算机硬件的运算进制大多是二进制 但是二进制太小了 所以聪明的程序猿就以2的10次幂来作为大多数程序的运算进制 而2⁰ 1024 例如&#xff1a;1G1024MB &#xff1b;1MB1024KB 1024 MB 1GB “一级棒…

静态划分信道(信道划分介质访问控制)

经过前面的总结和学习&#xff0c;我们再来总结一下信道划分介质访问控制。 一、传输数据的两种链路 首先&#xff0c;在数据链路层中我们有提到传输数据的两种链路&#xff1a;点对点式链路以及广播式链路。 点对点式链路&#xff1a; 两个相邻节点通过一个链路相连&#…