数据结构之图 Part3 – 2 遍历
BFS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LH.GraphConsole
{
    class Program
    {
        private static bool[] visited;
        private static Queue<int> rootVertexQueue = new Queue<int>();
        static void Main(string[] args)
        {
            BFSTranverse();
        }
        private static void BFSTranverse()
        {
            int vertexNumber = 9;
            int edgeNumber = 15;
            Graph graph = new Graph(vertexNumber, edgeNumber);
            graph.Vertexs[0] = "A";
            graph.Vertexs[1] = "B";
            graph.Vertexs[2] = "C";
            graph.Vertexs[3] = "D";
            graph.Vertexs[4] = "E";
            graph.Vertexs[5] = "F";
            graph.Vertexs[6] = "G";
            graph.Vertexs[7] = "H";
            graph.Vertexs[8] = "I";
            graph.Edges[0, 1] = 1;
            graph.Edges[0, 5] = 1;
            graph.Edges[1, 2] = 1;
            graph.Edges[1, 8] = 1;
            graph.Edges[1, 6] = 1;
            graph.Edges[2, 3] = 1;
            graph.Edges[2, 8] = 1;
            graph.Edges[3, 8] = 1;
            graph.Edges[3, 6] = 1;
            graph.Edges[3, 7] = 1;
            graph.Edges[3, 4] = 1;
            graph.Edges[4, 7] = 1;
            graph.Edges[4, 5] = 1;
            graph.Edges[5, 6] = 1;
            graph.Edges[6, 7] = 1;
            visited = new bool[vertexNumber];
            for (int i = 0; i < vertexNumber; i++)
            {
                if (!visited[i])
                {
                    rootVertexQueue.Enqueue(i);
                    while (rootVertexQueue.Count != 0)
                    {
                        var item = rootVertexQueue.Dequeue();
                        visited[i] = true;
                        Console.WriteLine("visited vertex index: " + item);
                        for (int j = 0; j < vertexNumber; j++)
                        {
                            if (graph.Edges[item, j] == 1 && !visited[j])
                            {
                                rootVertexQueue.Enqueue(j);
                                visited[j] = true;
                            }
                        }
                    }
                }
            }
        }
    }
}
结果:
数据结构之图 Part3 – 2 遍历的更多相关文章
- 数据结构之图 Part3 – 1 遍历
		DFS using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ... 
- 数据结构与算法之PHP用邻接表、邻接矩阵实现图的广度优先遍历(BFS)
		一.基本思想 1)从图中的某个顶点V出发访问并记录: 2)依次访问V的所有邻接顶点: 3)分别从这些邻接点出发,依次访问它们的未被访问过的邻接点,直到图中所有已被访问过的顶点的邻接点都被访问到. 4) ... 
- 重新整理数据结构与算法(c#)—— 图的深度遍历和广度遍历[十一]
		参考网址:https://www.cnblogs.com/aoximin/p/13162635.html 前言 简介图: 在数据的逻辑结构D=(KR)中,如果K中结点对于关系R的前趋和后继的个数不加限 ... 
- 【PHP数据结构】图的遍历:深度优先与广度优先
		在上一篇文章中,我们学习完了图的相关的存储结构,也就是 邻接矩阵 和 邻接表 .它们分别就代表了最典型的 顺序存储 和 链式存储 两种类型.既然数据结构有了,那么我们接下来当然就是学习对这些数据结构的 ... 
- 数据结构之 图论---图的深度遍历( 输出dfs的先后遍历序列 )
		图的深度遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出.遍历时,先遍历节点编 ... 
- 数据结构实验之图论二:图的深度遍历(SDUT 2107)(简单DFS)
		题解:图的深度遍历就是顺着一个最初的结点开始,把与它相邻的结点都找到,也就是一直往下搜索直到尽头,然后在顺次找其他的结点. #include <bits/stdc++.h> using n ... 
- 数据结构——图的深度优先遍历(邻接矩阵表示+java版本)
		1.深度优先遍历(DFS) 图的深度优先遍历本质上是一棵树的前序遍历(即先遍历自身,然后遍历其左子树,再遍历右子树),总之图的深度优先遍历是一个递归的过程. 如下图所示,左图是一个图,右图是图的深度 ... 
- <数据结构>XDOJ324,325图的优先遍历
		XDOJ324.图的广度优先遍历 问题与解答 问题描述 已知无向图的邻接矩阵,以该矩阵为基础,给出广度优先搜索遍历序列,并且给出该无向图的连通分量的个数.在遍历时,当有多个点可选时,优先选择编号小的顶 ... 
- SDUT-2107_图的深度遍历
		数据结构实验之图论二:图的深度遍历 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 请定一个无向图,顶点编号从0到n-1 ... 
随机推荐
- MD5 加密字符串
			public class MD5 { /*** * MD5加码 生成32位md5码 */ public static String string2MD5(String inStr){ MessageD ... 
- DIV的摇晃效果---jquery实现
			DIV的摇晃效果---jquery实现 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ... 
- Minimum Height Trees
			For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ... 
- 使用SharePoint 2010 母版页
			SharePoint 2010母版页所用的还是ASP.NET 2.0中的技术.通过该功能,实现了页面框架布局与实际内容的分离.虽然在本质上自定义母版页的过程和以前版本的SharePoint大致相同,但 ... 
- XsltListViewWebPart 和自定义列表视图
			http://msdn.microsoft.com/zh-cn/library/ff806162(v=office.14).aspx 
- rebot的使用
			rebot简要使用方法介绍 在介绍rebot前,首先说一下RobotFramework(后称RF)的主要输出文件. 当我们执行完一个RF脚本后,RF会输出3种文件.分别是Output.Log和Re ... 
- Appium+Robotframework实现Android应用的自动化测试-5:RIDE中AppiumLibrary的配置
			可能很多朋友已经迫不及待的想要用RobotFramework+AppiumLibrary来写Android App的测试脚本了,那我们也废话少说,直接开始. 首先打开RIDE,这是编写RobotFra ... 
- ffmpeg-20160512-git-bin
			ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ... 
- 数据结构——二叉查找树、AVL树
			二叉查找树:由于二叉查找树建树的过程即为插入的过程,所以其中序遍历一定为升序排列! 插入:直接插入,插入后一定为根节点 查找:直接查找 删除:叶子节点直接删除,有一个孩子的节点删除后将孩子节点接入到父 ... 
- AOP理解
			1.问题 问题:想要添加日志记录.性能监控.安全监测 2.最初解决方案 2.1.最初解决方案 缺点:太多重复代码,且紧耦合 2.2.抽象类进行共性设计,子类进行个性设计,此处不讲解,缺点一荣俱荣,一损 ... 
 
			
		