Search Graph Nodes
来源:互联网 发布:淘宝游戏店铺转让 编辑:程序博客网 时间:2024/06/05 03:50
Given a undirected graph
, a node
and a target
, return the nearest node to given node which value of it is target, return NULL
if you can't find.
There is a mapping
store the nodes' values in the given parameters.
java
/** * Definition for graph node. * class UndirectedGraphNode { * int label; * ArrayList<UndirectedGraphNode> neighbors; * UndirectedGraphNode(int x) { * label = x; neighbors = new ArrayList<UndirectedGraphNode>(); * } * }; */public class Solution { /** * @param graph a list of Undirected graph node * @param values a hash mapping, <UndirectedGraphNode, (int)value> * @param node an Undirected graph node * @param target an integer * @return the a node */ public UndirectedGraphNode searchNode(ArrayList<UndirectedGraphNode> graph, Map<UndirectedGraphNode, Integer> values, UndirectedGraphNode node, int target) { // Write your code here if (node == null || values == null) { return null; } if (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 root = queue.poll(); for (UndirectedGraphNode nei : root.neighbors) { if (values.get(nei) == target) { return nei; } if (set.contains(nei)) { continue; } else { set.add(nei); queue.offer(nei); } } } return null; }}python
from Queue import Queue# Definition for a undirected graph node# class UndirectedGraphNode:# def __init__(self, x):# self.label = x# self.neighbors = []class Solution: # @param {UndirectedGraphNode[]} graph a list of undirected graph node # @param {dict} values a dict, <UndirectedGraphNode, (int)value> # @param {UndirectedGraphNode} node an Undirected graph node # @param {int} target an integer # @return {UndirectedGraphNode} a node def searchNode(self, graph, values, node, target): # Write your code here if node is None or graph is None or values is None: return None if values[node] == target: return node queue = Queue() queue.put(node) arr = set([node]) while not queue.empty(): n = queue.get() for root in n.neighbors: if values[root] == target: return root if root in arr: continue else: arr.add(root) queue.put(root) return None
阅读全文
0 0
- Search Graph Nodes
- Search Graph Nodes
- Search Graph Nodes
- Search Graph Nodes
- Graph Search
- Graph search (facebook) 转
- DFS&&BFS Search Graph
- Facebook Graph Search
- LintCode Search Graph Node
- lintcode:Route Between Two Nodes in Graph
- DFS-----Route Between Two Nodes in Graph
- #176 Route Between Two Nodes in Graph
- Route Between Two Nodes in Graph
- Route Between Two Nodes in Graph
- Binary Search:222. Count Complete Tree Nodes
- Lowest Common Ancestor (LCA) of two nodes in graph
- Lintcode176 Route Between Two Nodes in Graph solution 题解
- Recursive Depth first search graph(adj matrix)
- Python递归之汉诺塔
- PAT (Basic Level) Practise (中文) 1062. 最简分数(20)
- 一些琐碎的java知识点
- 将一个英文句子的单词倒序输出到另一个文件,单词内容不倒序
- android之修改系统自带ProgressDialog样式
- Search Graph Nodes
- Hibernate级联操作和加载机制(二) cascade and fetch
- HDOJ 1079.Calendar Game 找规律博弈
- AABB外接盒碰撞检测
- 私教课程Day2 2017-09-14
- Python:python中的一些常用的数学运算符
- 完数
- 计算字符串中的单词数,并将其输出
- 基础总结篇之一:Activity生命周期