乐扣中等题(133)js--克隆图

这篇博客介绍了如何使用深度优先遍历来克隆一个图。首先判断节点,然后进行深度优先遍历,拷贝所有节点并存储,最后根据原图的连接方式连接拷贝的节点,从而完成图的克隆。
摘要由CSDN通过智能技术生成

解题步骤:
①深度或广度优先遍历所有节点;

②拷贝所有节点,存储起来;

③将拷贝的节点,按照原图的连接方法进行连接。

首先是判断node,不符合条件直接返回即可,不用浪费时间。

然后再书写完整的深度优先遍历的过程,随后需要拷贝节点并存储。拷贝的时候比较简单,只要用

const nCopy=new Node(n.val)

 就可以了,现在不传入neighbors会自动变成一个空数组。存储可以巧妙地和原节点的遍历形成一个映射,将visited新建的Set改成Map,然后让n对应nCopy即可,至此完成了节点的拷贝和存储。

接下来是拷贝边。

nCopy的neighbors和原节点对应上即可。

最后返回拷贝到的克隆图,也是获取node节点的克隆即可。

/**
 * // Definition for a Node.
 * function Node(val, neighbors) {
 *    this.val = val === undefined ? 0 : val;
 *    this.neighbors = neighbors === undefined ? [] : neighbors;
 * };
 */

/**
 * @param {Node} node
 * @return {Node}
 */
var cloneGraph = function(node) {
    if(!node) {return;}
    c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值