【Java】给定有向图,设计一个算法,找出两个结点之间是否存在一条路径
来源:互联网 发布:人到五十知天命 编辑:程序博客网 时间:2024/06/05 09:18
给定有向图,设计一个算法,找出两个结点之间是否存在一条路径
通过图的遍历,比如深度优先或者广度优先搜索等,就能解决这个问题
从结点的其中一个出发,在遍历过程中,检查是否找到另一个结点即可
在遍历过程中,访问过的结点都应被标记为“已访问”,以避免重复访问
深度优先实现起来比较简单,递归即可
但广度优先很适合用来找最短路径,深度优先在访问临近结点之前需要先深度遍历其中一个临近结点
import java.awt.Graphics;import java.util.LinkedList;public class Search {class Node {State state;}public enum State {Unvisited, Visited, Visiting;}public boolean search(Graphics g, Node start, Node end) {LinkedList<Node> q = new LinkedList<Node> ();for ( Node u:((Object) g).getNodes() ) {u.state = State.Unvisited;}start.state = State.Visiting;q.add(start);Node u;while( !q.isEmpty() ) {u = q.removeFirst();if( null != u) {for (Node v:u.getAdjacent()) {if (v.state == State.Unvisited) {if ( v == end) { return true;}else {v.state = State.Visiting;q.add(v);}}}u.state = State.Visited;}}return false;}}
0 0
- 【Java】给定有向图,设计一个算法,找出两个结点之间是否存在一条路径
- 程序员面试金典: 9.4树与图 4.2给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。
- 有向图中两个结点之间是否存在一条路径
- 两个结点之间是否存在一条路径
- 采用邻接表存储结构,编写一个判别无向图中任意给定的两个顶点之间是否存在一条长度为k的简单路径的算法。
- 用深度遍历和广度遍历判断有向图中两个点之间是否存在路径java
- 判别一个无向图中某两点之间是否存在一条长度为k的简单路径
- 判别无向图中任意给定的2个顶点之间是否存在一条长度 为k的简单路径
- zoj3811(判断图中是否存在一条路径包含若干有顺序的结点)
- Cracking coding interview(4.2)有向图判断任意2点之间是否有一条有向路径
- 两点之间是否存在一条路径
- Chapter 4 | Trees and Graphs--判断有向图两节点之间是否存在路径
- 13、设计一个算法,找出二叉树上任意两个结点的最近共同父结点。
- Tree_Graph 有向图是否存在路径 @CareerCup
- 有向图两顶点间是否存在路径
- 给定两个字符串x、y,设计一个算法来判断是否存在一对正整数m、n,使得x^m = y^n。
- 计算有向无环图中两个结点的路径数C++
- Java算法给定一个整数数组,找出其中两个数相加等于目标值
- JS取出字符串的12种方法
- IOS中判断设备型号的宏定义
- 打开vim教程
- SPOJ QTREE7 lct
- VC连接ADO方式ACCESS数据库在WIN7下编译到XP下不能运行
- 【Java】给定有向图,设计一个算法,找出两个结点之间是否存在一条路径
- leetcode[190]:Reverse Bits
- 【最短路】poj3660 最短路的应用
- 标准二维表
- LintCode Binary Tree Inorder Traversal 二叉树的中序遍历(非递归)
- python 的日志logging模块学习
- 测试用例基本要点
- 【IE6的BUG一】链接伪类(:hover)CSS背景图片有闪动BUG
- hdu4865 Peter's Hobby