2024.4.3力扣每日一题——找出克隆二叉树中的相同节点

news/2024/7/7 20:24:07

2024.4.3

      • 题目来源
      • 我的题解
        • 方法一 深度优先搜索
        • 方法二 广度优先遍历

题目来源

力扣每日一题;题序:1379

我的题解

方法一 深度优先搜索

同时对二叉树 original 与 cloned 进行深度优先搜索,如果 original当前搜索的节点的引用等于 target 节点的引用,那么对应地返回 cloned 当前搜索的节点,否则继续对各自的左右节点同时进行搜索。

时间复杂度:O(n)
空间复杂度:O(n)

public final TreeNode getTargetCopy(final TreeNode original, final TreeNode cloned, final TreeNode target) {
    if(original==null)
        return null;
    if(target.val==cloned.val)
        return cloned;
    TreeNode left=getTargetCopy(original.left,cloned.left,target);
    TreeNode right=getTargetCopy(original.right,cloned.right,target);
    return left==null?right:left;
}
方法二 广度优先遍历

使用队列同时对二叉树 original和 cloned 进行广度优先搜索,初始时分别将根节点 original 和 cloned 压入队列 q1和 q2 。假设当前搜索的节点分别为 node1与 node2,将 node1与 node2分别弹出队列,如果 node1节点的引用等于 target 节点的引用,那么返回 node2,否则将分别将 node1和 node2 的非空子节点压入队列 q1 和 q2,继续搜索过程。

时间复杂度:O(n)
空间复杂度:O(n)

public final TreeNode getTargetCopy(final TreeNode original, final TreeNode cloned, final TreeNode target) {
    if(original==null)
        return null;
    Queue<TreeNode> queue=new LinkedList<>();
    queue.offer(cloned);
    while(!queue.isEmpty()){
        int sz=queue.size();
        for(int i=0;i<sz;i++){
            TreeNode t=queue.poll();
            if(target.val==t.val)
                return t;
            if(t.left!=null)
                queue.offer(t.left);
            if(t.right!=null)
                queue.offer(t.right);
        }
    }
    return null;//不可能的
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~


http://lihuaxi.xjx100.cn/news/2159729.html

相关文章

python 怎样卸载pip

首先&#xff0c;同时按下键盘&#xff0c;winR 调出运行窗口&#xff0c;输入‘cmd’命令。 想在cmd界面进行解析&#xff0c;必须将python环境变量安装好&#xff0c;可以通过输入‘python’来确定是否调整好变量。 首先将python的工作路径调整值&#xff0c;所需安装工具包位…

茴香豆 RAG 智能助理 搭建

一. 环境准备 1. 构建Conda环境 studio-conda -o internlm-base -t InternLM2_Huixiangdou 2. 进入创建的conda环境 conda activate InternLM2_Huixiangdou 二. 准备基础文件 1. 创建文件夹 cd /root && mkdir models 2. 构建软链接 # 复制BCE模型 ln -s /root…

蓝桥杯 基础练习 特殊的数字

资源限制 内存限制&#xff1a;512.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 153是一个非常特殊的数&#xff0c;它等于它的每位数字的立方和&#xff0c;即1531*1*15*5*53*3*3。编程求所有满足这种条件…

字符函数strlen、strcpy、strcat、strcmp、strstr、strtok、 strerror和perror函数

目录 1、strlen函数 strlen函数的模拟实现 2、strcpy函数 strcpy函数的模拟实现 strncpy函数 strncpy函数的模拟实现 3、srtcat函数 strcat函数的模拟实现 strncat函数 strncat函数的模拟实现 4、strcmp函数 strcmp函数的模拟实现 strncmp函数 5、strstr函数 st…

【2023注册测绘师考试综合能力考试攻略】综合练习题

学习目标: 学完航空摄影测量等章节,试着做做题吧。 学习内容: 【单项选择题】 (1)某航摄分区的航摄比例尺为 1:6000,所用航摄仪主距为100mm,则分区内地形高差最大 应不超过( )m。 A.50 B.100 C.150 D.200 【答案】B (2)根据现行规范规定,行政区域界线测量中,界桩…

【刷题篇】回溯算法(三)

文章目录 1、全排列2、子集3、找出所有子集的异或总和再求和4、全排列 II5、电话号码的字母组合6、括号生成 1、全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 class Solution { public:vector<vector<i…

三:synchronized 关键字

目录 1、共享带来的问题2、synchronized 用法3、类加载器对 Class 锁的影响4、synchronized 实现原理4.1、同步方法、同步代码块4.2、对象内存布局4.3、Monitor 对象定义 5、synchronized 与原子性6、synchronized 与可见性7、synchronized 与有序性8、synchronized 锁升级8.1、…

[闲聊统计]之参数估计是什么?(上)

参数估计是推断统计的重要内容之一。它是在抽样及抽样分布的基础上&#xff0c;根据样本统计量来推断所关心的总体参数。说白了&#xff0c;就是用样本信息来代替总体信息 例如&#xff1a;现在要调查某大学大学生的一个消费情况&#xff0c;假设全校大学生的平均消费金额为 μ…