给定一张 无向图,一个节点以及一个目标值,返回距离这个节点最近且值为目标值的节点,如果不能找到则返回 NULL。
在给出的参数中, 我们用 map 来存节点的值
在BFS遍历过程中 最先找到的与目标值相同的节点一定是最近的
因为是按层遍历 距离按层逐渐增加
public class Solution {
public UndirectedGraphNode searchNode(ArrayList<UndirectedGraphNode> graph,
Map<UndirectedGraphNode, Integer> values,
UndirectedGraphNode node,
int target) {
if(node == null || values.get(node) == target)
return node;
Queue<UndirectedGraphNode> queue = new LinkedList<>();
Set<UndirectedGraphNode> set = new HashSet<>();
queue.offer(node);
set.add(node);
while(!queue.isEmpty()){
UndirectedGraphNode n = queue.poll();
for(UndirectedGraphNode neighbor : n.neighbors){
if(set.contains(neighbor))
continue;
if(values.get(neighbor) == target)
return neighbor;
queue.offer(neighbor);
set.add(neighbor);
}
}
return null;
}
}