Клонирование 133. На фиг.
Дай вам опорный узел подключен неориентированный рисунок, глубокая копия вы вернетесь к этой цифре (клон).
Каждый узел в графе содержит значение Val (INT) и его список соседей (список [Узел]).
class Node {
public int val;
public List<Node> neighbors;
}
Формат теста:
Для простоты, значение каждого узла и его индекс одинаково. Например, значение первого узла, второй узел 2, и так далее. Фигура с использованием списка смежности, представленный в тесте.
Примыкание список неупорядоченный список для указания ограниченного набора фиг. Каждый список описывает соседний набор узлов на диаграмме.
Данный узел всегда будет первым узлом на фиг. 1 (Value). Вы должны скопировать данный узел в качестве ссылки на возвращает клоны фиг.
Пример 1:
Входной сигнал: adjList = [[2,4], [1,3], [2,4], [1,3]]
Выход: [[2,4], [1,3], [2,4], [1,3]]
объяснение:
фиги есть четыре узла.
Узел 1 представляет собой значение 1, она имеет два соседей: узлы 2 и 4.
Значение узла-равно 2, он имеет два соседей: узлы 1 и 3.
3 является значением узла 3, он имеет два соседей: узлы 2 и 4.
4 является значением узла 4, он имеет два соседей: узлы 1 и 3.
Пример 2:
Входной сигнал: adjList = [[]]
Выход: [[]]
Пояснение: ввод содержит пустой список. Эта схема является лишь значение только одного узла, он не имеет каких - либо соседей.
Пример 3:
Входной сигнал: adjList = []
Выход: []
Пояснение: Эта цифра пуста, она не содержит какой - либо узел.
Пример 4:
Входной сигнал: adjList = [[2], [1]]
Выход: [[2], [1]]
Советы:
Узлы в диапазоне от 1 до 100.
Каждый узел значение является уникальным.
Неориентированный граф является простым графом, что означает , что нет дубликатов на стороны фиг, поскольку нет петли.
Как неориентированный граф, если узел р д соседний узел, узел узла р д также должен быть соседями.
Рис является связным графом, можно получить доступ с данного узла ко всем узлам.
PS:
Клонирование на фиг.
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> neighbors;
public Node() {
val = 0;
neighbors = new ArrayList<Node>();
}
public Node(int _val) {
val = _val;
neighbors = new ArrayList<Node>();
}
public Node(int _val, ArrayList<Node> _neighbors) {
val = _val;
neighbors = _neighbors;
}
}
*/
class Solution {
Map<Node, Node> map = new HashMap<>();
public Node cloneGraph(Node node) {
if(node == null) return null;
Node copy = new Node(node.val, new ArrayList<>());
map.put(node, copy);
for(Node neighbor : node.neighbors){
if(map.containsKey(neighbor)){
copy.neighbors.add(map.get(neighbor));
}else{
copy.neighbors.add(cloneGraph(neighbor));
}
}
return copy;
}
}