文章目录

  • 1. 题目
  • 2. 解题
    • 2.1 DFS
    • 2.2 BFS

1. 题目

给定一棵 N 叉树的根节点 root ,返回该树的深拷贝(克隆)。

N 叉树的每个节点都包含一个值( int )和子节点的列表( List[Node] )。

class Node {public int val;public List<Node> children;
}

N 叉树的输入序列用层序遍历表示,每组子节点用 null 分隔(见示例)。

进阶:你的答案可以适用于克隆图问题吗?

示例 1:
输入:root = [1,null,3,2,4,null,5,6]
输出:[1,null,3,2,4,null,5,6]示例 2:
输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出:[1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]提示:
给定的 N 叉树的深度小于或等于 1000。
节点的总个数在 [0, 10^4] 之间

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/clone-n-ary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 DFS

/*
// Definition for a Node.
class Node {
public:int val;vector<Node*> children;Node() {}Node(int _val) {val = _val;}Node(int _val, vector<Node*> _children) {val = _val;children = _children;}
};
*/class Solution {//C++
public:Node* cloneTree(Node* root) {if(!root) return root;Node* r = new Node(root->val)for(auto it : root->children){Node* child = cloneTree(it);r->children.push_back(child);}return r;}
};

124 ms 175 MB

"""
# Definition for a Node.
class Node:def __init__(self, val=None, children=None):self.val = valself.children = children if children is not None else []
"""class Solution: # py3def cloneTree(self, root: 'Node') -> 'Node':if not root:return rootr = Node(root.val)for c in root.children:child = self.cloneTree(c)r.children.append(child)return r

84 ms 17.5 MB

2.2 BFS

  • 使用2个队列,同步进行出入队即可
class Solution {public:Node* cloneTree(Node* root) {if(!root) return root;Node* r = new Node(root->val);queue<Node*> q, qc;q.push(root);qc.push(r);Node* cur, *cur_, *c;while(!q.empty()){cur = q.front();cur_ = qc.front();q.pop();qc.pop();for(auto it : cur->children){if(!it){cur_->children.push_back(NULL);continue;}q.push(it);c = new Node(it->val);cur_->children.push_back(c);qc.push(c);}}return r;}
};

116 ms 175.1 MB


长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1490. 克隆 N 叉树(DFS/BFS)相关推荐

  1. LeetCode 733. 图像渲染(DFS/BFS)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间. 给你一个坐标 (sr ...

  2. LeetCode 226. 翻转二叉树(DFS BFS)

    文章目录 1. 题目信息 2. 解题 2.1 DFS 2.2 BFS 1. 题目信息 翻转一棵二叉树. 示例:输入:4/ \2 7/ \ / \ 1 3 6 9输出:4/ \7 2/ \ / \ 9 ...

  3. LeetCode算法题13:DFS/BFS - 单词搜索

    文章目录 单词搜索 DFS : 小小的优化 总结 单词搜索 题目链接:https://leetcode-cn.com/problems/word-search/ 题目描述: 给定一个 m x n 二维 ...

  4. leetcode之DFS+BFS+DSU刷题总结2

    leetcode之DFS+BFS+DSU刷题总结2 1-对称二叉树 题目链接:题目链接戳这里!!! 思路1:迭代法 一棵二叉树,左右子树分别进队,如果左右子树都为空,则结束遍历,如果左右子树仅一个为空 ...

  5. [Leetcode][第130题][JAVA][被围绕的区域][DFS][BFS]

    [问题描述][中等] [解答思路] 1. 深度优先搜索 使用深度优先搜索实现标记操作.在下面的代码中,我们把标记过的字母 O 修改为字母 A. 复杂度 class Solution {int[] dx ...

  6. 1.5万字详述 | 全开源:python写小游戏+AI强化学习与传统DFS/BFS控制分别实现

    简介:本周的强化学习我们来到实践部分.我以我在 GitHub 上开源的项目 PiperLiu / Amazing-Brick-DFS-and-DRL 为对象,从零开始与各位朋友分享:如何用 pytho ...

  7. 力扣200岛屿数量(DFS/BFS)

    200. 岛屿数量 - 力扣(LeetCode) (leetcode-cn.com) 1.DFS DFS的思路是,首先遍历整个表,找到1结果就加一,之后通过DFS将找到的1连通区域内的所有1变为0,代 ...

  8. 20天拿下华为OD笔试之【DFS/BFS】2023Q1A-开心消消乐【闭着眼睛学数理化】全网注释最详细分类最全的华为OD真题题解

    [DFS/BFS]2023Q1A-开心消消乐 题目描述与示例 题目描述 给定一个 N 行 M 列的二维矩阵,矩阵中每个位置的数字取值为 0 或 1,矩阵示例如: 1 1 0 0 0 0 0 1 0 0 ...

  9. 【限时免费】20天拿下华为OD笔试之【DFS/BFS】2023B-寻找最大价值的矿堆【闭着眼睛学数理化】全网注释最详细分类最全的华为OD真题题解

    [DFS/BFS]2023B-寻找最大价值的矿堆 题目描述与示例 给你一个由 '0'(空地).'1'(银矿).'2'(金矿)组成的的地图,矿堆只能由上下左右相邻的金矿或银矿连接形成.超出地图范围可以认 ...

最新文章

  1. 第三代测序技术的主要特点及其在病毒基因组研究中的应用
  2. 模型裁剪--Rethinking the Value of Network Pruning
  3. 阿里云云服务器更新GCC是提示错误解决方案
  4. ICLR 2019论文接收结果揭晓:24篇oral论文有没有你?
  5. Redis分布式锁实现
  6. Dataframe花样切片~(Python)
  7. java中怎样定义实数_Java Math 类中的新功能,第 1 部分: 实数
  8. Android接收短信
  9. 如何在iPhone、iPad和Mac上查看照片的EXIF数据?
  10. 在Ubuntu 18.04上安装tesseract 4.1.1
  11. 图片的单点触摸移动与多点触摸移动缩放
  12. 比起高性能计算,高端存储才更亟待国产化
  13. 华为、华三交换机查看光模块收发光及光模块信息
  14. Citrix提供免费阳春版XenServer
  15. 北京城市总体规划 (2016年—2035年)高清大图
  16. Vue2 面试题总结1(笔记自用)
  17. 服务器芯片市场国产,飞腾发布国产腾云 S2500服务器芯片 2020中国服务器行业市场全景调研...
  18. Game 迷城的国度 Next(类似暗黑的游戏)
  19. 滁州职业学院计算机,2020年滁州职业技术学院分类职业技能(系统根据考生所填第一志愿发布试卷进行测试)1、机电类专业技能(满分80分)...
  20. shell 脚本中双引号、单引号、反引号的区别,其他命令

热门文章

  1. 【机器学习】opencv-数据预处理
  2. namespace! 报错
  3. 机器学习如何解决问题
  4. 在Python2.7下如何安装TA-lib库
  5. TCP的定时器系列 — SYNACK定时器
  6. 简单了解线程和进程、多进程和多线程、并发和并行的区别
  7. 汇编指令的学习3——协处理器cp15的操作指令mcr、mrc
  8. POJ_1862 Stripies 【贪心】
  9. python之file 方法
  10. Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验