LeetCode 1490. 克隆 N 叉树(DFS/BFS)
文章目录
- 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)相关推荐
- LeetCode 733. 图像渲染(DFS/BFS)
文章目录 1. 题目 2. 解题 2.1 DFS 2.2 BFS 1. 题目 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间. 给你一个坐标 (sr ...
- LeetCode 226. 翻转二叉树(DFS BFS)
文章目录 1. 题目信息 2. 解题 2.1 DFS 2.2 BFS 1. 题目信息 翻转一棵二叉树. 示例:输入:4/ \2 7/ \ / \ 1 3 6 9输出:4/ \7 2/ \ / \ 9 ...
- LeetCode算法题13:DFS/BFS - 单词搜索
文章目录 单词搜索 DFS : 小小的优化 总结 单词搜索 题目链接:https://leetcode-cn.com/problems/word-search/ 题目描述: 给定一个 m x n 二维 ...
- leetcode之DFS+BFS+DSU刷题总结2
leetcode之DFS+BFS+DSU刷题总结2 1-对称二叉树 题目链接:题目链接戳这里!!! 思路1:迭代法 一棵二叉树,左右子树分别进队,如果左右子树都为空,则结束遍历,如果左右子树仅一个为空 ...
- [Leetcode][第130题][JAVA][被围绕的区域][DFS][BFS]
[问题描述][中等] [解答思路] 1. 深度优先搜索 使用深度优先搜索实现标记操作.在下面的代码中,我们把标记过的字母 O 修改为字母 A. 复杂度 class Solution {int[] dx ...
- 1.5万字详述 | 全开源:python写小游戏+AI强化学习与传统DFS/BFS控制分别实现
简介:本周的强化学习我们来到实践部分.我以我在 GitHub 上开源的项目 PiperLiu / Amazing-Brick-DFS-and-DRL 为对象,从零开始与各位朋友分享:如何用 pytho ...
- 力扣200岛屿数量(DFS/BFS)
200. 岛屿数量 - 力扣(LeetCode) (leetcode-cn.com) 1.DFS DFS的思路是,首先遍历整个表,找到1结果就加一,之后通过DFS将找到的1连通区域内的所有1变为0,代 ...
- 20天拿下华为OD笔试之【DFS/BFS】2023Q1A-开心消消乐【闭着眼睛学数理化】全网注释最详细分类最全的华为OD真题题解
[DFS/BFS]2023Q1A-开心消消乐 题目描述与示例 题目描述 给定一个 N 行 M 列的二维矩阵,矩阵中每个位置的数字取值为 0 或 1,矩阵示例如: 1 1 0 0 0 0 0 1 0 0 ...
- 【限时免费】20天拿下华为OD笔试之【DFS/BFS】2023B-寻找最大价值的矿堆【闭着眼睛学数理化】全网注释最详细分类最全的华为OD真题题解
[DFS/BFS]2023B-寻找最大价值的矿堆 题目描述与示例 给你一个由 '0'(空地).'1'(银矿).'2'(金矿)组成的的地图,矿堆只能由上下左右相邻的金矿或银矿连接形成.超出地图范围可以认 ...
最新文章
- 第三代测序技术的主要特点及其在病毒基因组研究中的应用
- 模型裁剪--Rethinking the Value of Network Pruning
- 阿里云云服务器更新GCC是提示错误解决方案
- ICLR 2019论文接收结果揭晓:24篇oral论文有没有你?
- Redis分布式锁实现
- Dataframe花样切片~(Python)
- java中怎样定义实数_Java Math 类中的新功能,第 1 部分: 实数
- Android接收短信
- 如何在iPhone、iPad和Mac上查看照片的EXIF数据?
- 在Ubuntu 18.04上安装tesseract 4.1.1
- 图片的单点触摸移动与多点触摸移动缩放
- 比起高性能计算,高端存储才更亟待国产化
- 华为、华三交换机查看光模块收发光及光模块信息
- Citrix提供免费阳春版XenServer
- 北京城市总体规划 (2016年—2035年)高清大图
- Vue2 面试题总结1(笔记自用)
- 服务器芯片市场国产,飞腾发布国产腾云 S2500服务器芯片 2020中国服务器行业市场全景调研...
- Game 迷城的国度 Next(类似暗黑的游戏)
- 滁州职业学院计算机,2020年滁州职业技术学院分类职业技能(系统根据考生所填第一志愿发布试卷进行测试)1、机电类专业技能(满分80分)...
- shell 脚本中双引号、单引号、反引号的区别,其他命令