```Given a directed graph, design an algorithm to find out whether there is a route between two nodes.

Have you met this question in a real interview? Yes
Example
Given graph:

A----->B----->C
\     |
\    |
\   |
\  v
->D----->E
for s = B and t = E, return true

for s = D and t = C, return false```

DFS:

``` /**
* Definition for Directed graph.
* class DirectedGraphNode {
*     int label;
*     ArrayList<DirectedGraphNode> neighbors;
*     DirectedGraphNode(int x) {
*         label = x;
*         neighbors = new ArrayList<DirectedGraphNode>();
*     }
* };
*/
public class Solution {
/**
* @param graph: A list of Directed graph node
* @param s: the starting Directed graph node
* @param t: the terminal Directed graph node
* @return: a boolean value
*/
public boolean hasRoute(ArrayList<DirectedGraphNode> graph,
DirectedGraphNode s, DirectedGraphNode t) {
HashSet<DirectedGraphNode> visited = new HashSet<DirectedGraphNode>();　　　　　　　visited.add(s);
return dfs(s, t, visited);
}

public boolean dfs(DirectedGraphNode s, DirectedGraphNode t, HashSet<DirectedGraphNode> visited) {
if (s == t) return true;
for (DirectedGraphNode neighbor : s.neighbors) {
if (!visited.contains(neighbor)) {
if (dfs(neighbor, t, visited))
return true;
}
}
return false;
}
}```

BFS:

``` public class Solution {
/**
* @param graph: A list of Directed graph node
* @param s: the starting Directed graph node
* @param t: the terminal Directed graph node
* @return: a boolean value
*/
public boolean hasRoute(ArrayList<DirectedGraphNode> graph,
DirectedGraphNode s, DirectedGraphNode t) {
HashSet<DirectedGraphNode> visited = new HashSet<DirectedGraphNode>();
if (s == t) return true;
queue.offer(s);
while (!queue.isEmpty()) {
DirectedGraphNode cur = queue.poll();
for (DirectedGraphNode neighbor : cur.neighbors) {
if (neighbor == t) return true;
if (visited.contains(neighbor)) continue;
queue.offer(neighbor);
}
}
return false;
}
}```

## Lintcode: Route Between Two Nodes in Graph的更多相关文章

1. Route Between Two Nodes in Graph

Given a directed graph, design an algorithm to find out whether there is a route between two nodes. ...

2. [CareerCup] 4.2 Route between Two Nodes in Directed Graph 有向图中两点的路径

4.2 Given a directed graph, design an algorithm to find out whether there is a route between two nod ...

3. [LintCode]——目录

Yet Another Source Code for LintCode Current Status : 232AC / 289ALL in Language C++, Up to date (20 ...

4. BFS vs DFS

1 Clone Graph   1  copy ervery nodes by bfs  2  add neighbors public UndirectedGraphNode cloneGraph( ...

5. HDU 4240 Route Redundancy

Route Redundancy Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Origin ...

6. HDU 2454 Degree Sequence of Graph G（Havel定理 推断一个简单图的存在）

主题链接:pid=2454">http://acm.hdu.edu.cn/showproblem.php?pid=2454 Problem Description Wang Haiya ...

7. 深度学习在graph上的使用

原文地址:https://zhuanlan.zhihu.com/p/27216346 本文要介绍的这一篇paper是ICML2016上一篇关于 CNN 在图(graph)上的应用.ICML 是机器学习 ...

8. Hdoj 2454.Degree Sequence of Graph G 题解

Problem Description Wang Haiyang is a strong and optimistic Chinese youngster. Although born and bro ...

9. Echarts中graph类型的运用求教

以下是百度Echarts官网上关系图的源码,但是这个关系图的node节点和edge都是静态文件里规定好的,我现在想动态实现,点击其中一个节点A然后新产生一个新节点B,并且有A和B之间的edge,就类似 ...

## 随机推荐

1. gulp之压缩合并MD5清空替换加前缀以及自动编译自动刷新浏览器大全

gulp是基于流的前端构件化工具.目前比较火的前端构建化工具还是挺多的,grunt gulp fis3等等. 这个鬼东西有什么用?请参考https://www.zhihu.com/question/3 ...

3. 遍历json对象---Java

Iterator iterator = a.keys(); while(iterator.hasNext()){ String key = (String) iterator.next(); Stri ...

4. windows apache vhost 403 error

<Directory D:\workspace\ecshop> Options FollowSymLinks AllowOverride None Order deny,allow all ...

5. Java Web 部署到Tomcat

1.在conf目录中,新建Catalina(注意大小写)＼localhost目录,在该目录中新建一个xml文件,名字可以随意取,只要和当前文件中的文件名不重复就行了,该xml文件的内容为: <C ...

6. PHPSingleton模式的例子

在这篇文章中PHPSingleton模式的解释不一定好!仅举它的一个例子.其目的是为了让自己通过一个例子来加深对Singleton模式的理解!这里,以供参考! 单例:能够简单的理解是通过一个类,仅仅能 ...

7. Java Socket 服务端发送数据 客户端接收数据

服务端: package com.thinkgem.wlw.modules.api.test.socket; /** * @Author: zhouhe * @Date: 2019/4/8 9:30 ...

8. 【转】Oracle EBS中查询Profile的各种SQL

参考 http://blog.csdn.net/pan_tian/article/details/7652968#t0 Using API FND_PROFILE.save to update pro ...

9. spring 自己创建配置类

10. [C++]竞赛模板&#183;数据统计与IO(重定向版与非重定向版)

/* 数据统计与IO 重定向版模板 描述:本机测试用文件数据流重定向,一旦提交到比赛就自动“删除”重定向语句 */ # define LOCAL #include<stdio.h> # ...