JavaScript实现图的深度广度优先遍历
2015-03-18 16:20
411 查看
function Graph(v) {
this.vertices = v;
//初始化顶点
this.edges = 0;
//边数先设置为0
this.adj = [];
//为每一个顶点准备一个链表,表示它和所有节点的关系
for (var i = 0; i < this.vertices.length; i++) {
this.adj[i] = [];
this.adj[i].push("");
}
this.addEdge = addEdge;
this.toString = toString;
}
function addEdge(v, w) {
//两个顶点组成一条边
this.adj[v].push(w);
this.adj[w].push(v);
this.edges++;
}
function Graph(v) {
this.vertices = v;
//初始化顶点
this.edges = 0;
//边数先设置为0
this.adj = [];
//为每一个顶点准备一个链表,表示它和所有节点的关系
for (var i = 0; i < this.vertices.length; i++) {
this.adj[i] = [];
this.adj[i].push("");
}
this.addEdge = addEdge;
this.toString = toString;
}
function addEdge(v, w) {
//两个顶点组成一条边
this.adj[v].push(w);
this.adj[w].push(v);
this.edges++;
}
function ShowGraph() {
for (var i = 0; i < this.vertices; i++) {
print(i + "=>");
for (var j = 0; j < this.vertices; ++j) {
if (this.adj[i][j] != "undefined") {
print(this.adj[i][j]);
}
}
}
}
function dfs(v) {
this.marked[v] = true;
if (this.adj[v] != undefined) {
print(v);
}
for (var key in adj[v]) {
if (!this.marked[w]) {
this.dfs(w);
}
}
}
function bfs(node) {
var queue = [];
this.marked[node] = true;
queue.push(node);
while (queue.length > 0) {
var v = queue.shift();//移出队列
if (v == undefined) {
print(v);
}
for (var w in this.adj[v]) {
if (!this.marked[w]) {
this.edgeTo(w) = v;
this.marked[w] = true;
queue.push(w);
}
}
}
}
this.vertices = v;
//初始化顶点
this.edges = 0;
//边数先设置为0
this.adj = [];
//为每一个顶点准备一个链表,表示它和所有节点的关系
for (var i = 0; i < this.vertices.length; i++) {
this.adj[i] = [];
this.adj[i].push("");
}
this.addEdge = addEdge;
this.toString = toString;
}
function addEdge(v, w) {
//两个顶点组成一条边
this.adj[v].push(w);
this.adj[w].push(v);
this.edges++;
}
function Graph(v) {
this.vertices = v;
//初始化顶点
this.edges = 0;
//边数先设置为0
this.adj = [];
//为每一个顶点准备一个链表,表示它和所有节点的关系
for (var i = 0; i < this.vertices.length; i++) {
this.adj[i] = [];
this.adj[i].push("");
}
this.addEdge = addEdge;
this.toString = toString;
}
function addEdge(v, w) {
//两个顶点组成一条边
this.adj[v].push(w);
this.adj[w].push(v);
this.edges++;
}
function ShowGraph() {
for (var i = 0; i < this.vertices; i++) {
print(i + "=>");
for (var j = 0; j < this.vertices; ++j) {
if (this.adj[i][j] != "undefined") {
print(this.adj[i][j]);
}
}
}
}
function dfs(v) {
this.marked[v] = true;
if (this.adj[v] != undefined) {
print(v);
}
for (var key in adj[v]) {
if (!this.marked[w]) {
this.dfs(w);
}
}
}
function bfs(node) {
var queue = [];
this.marked[node] = true;
queue.push(node);
while (queue.length > 0) {
var v = queue.shift();//移出队列
if (v == undefined) {
print(v);
}
for (var w in this.adj[v]) {
if (!this.marked[w]) {
this.edgeTo(w) = v;
this.marked[w] = true;
queue.push(w);
}
}
}
}
相关文章推荐
- JavaScript实现树的遍历算法示例【广度优先与深度优先】
- C/C++代码实现图(有向图)的深度,广度优先遍历
- 简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- C#一颗简单多叉树的实现(原理、广度优先遍历、深度优先遍历)
- (百度笔试)简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 图的邻接表存储 深度优先遍历 广度优先遍历 C语言实现
- 【算法学习】图相关算法编程实现-深度优先遍历和广度优先遍历
- 用java语言实现图的广度优先遍历和深度优先遍历
- 图的理解:深度优先和广度优先遍历及其 Java 实现
- 图的深度优先和广度优先遍历(图以邻接表表示,由C++面向对象实现)
- 二叉树搜索树遍历--前序、中序、后序、深度优先、广度优先遍历的简单实现
- (百度笔试)简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- 图的邻接矩阵存储 深度优先遍历 广度优先遍历 C语言实现
- 图的理解:深度优先和广度优先遍历及其 Java 实现
- 百度面试题——简要说明树的深度优先、广度优先遍历算法,及非递归实现的特点
- C#一颗简单多叉树的实现(原理、广度优先遍历、深度优先遍历)
- 数据结构--图的理解:深度优先和广度优先遍历及其 Java 实现
- 图的邻接表存储 深度优先遍历 广度优先遍历 C语言实现
- 图的理解:深度优先和广度优先遍历及其 Java 实现
- 深度、广度优先遍历算法C实现