题目来源:链接
题目描述:
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。
示例 1:

输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]
实现代码:
def copyRandomList(self, head: 'Node') -> 'Node':
def dfs(head):
if not head:
return None
if head in visited:
return visited[head]
copy = Node(head.val,None,None)
visited[head] = copy
copy.next = dfs(head.next)
copy.random = dfs(head.random)
return copy
visited = {}
return dfs(head)
解题思路:
其实我们可以看成这就是一个图:图由多个节点组成,每个节点有两个指针next和random
按照C++,我们可以将图变成邻接表或者邻接矩阵,
遍历的方式有DFS(递归)和BFS(队列,迭代),这里主要考察的就是图的遍历
复杂链表的深度克隆
本文介绍了一种复杂链表的复制方法,该链表包含next和random指针。通过使用深度优先搜索(DFS)的递归算法,文章详细解释了如何创建链表的完整副本,包括其随机连接。
460

被折叠的 条评论
为什么被折叠?



