广度优先遍历 C#

本文介绍了一种使用C#实现的简单图结构,并通过广度优先搜索(BFS)算法进行节点遍历。示例中定义了一个简单的图结构,每个节点包含其相邻节点列表。通过广度优先搜索算法实现了从指定起始节点开始遍历所有可达节点的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System.Collections;
using System.Collections.Generic;

namespace ConsoleApp1
{
    class SimpleGraph
    {
        public SimpleGraph()
        {
            // 初始化边表
            edges = new Dictionary<char, char[]>();
        }

        public Dictionary<char, char[]> edges;

        public char[] neighbors(char id)
        {
            return edges[id];
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // 初始化图
            SimpleGraph example_graph = new SimpleGraph();
            char[] A = { 'B' };
            char[] B = { 'A', 'C', 'D' };
            char[] C = { 'A' };
            char[] D = { 'E', 'A' };
            char[] E = { 'B' };
            example_graph.edges.Add('A', A);
            example_graph.edges.Add('B', B);
            example_graph.edges.Add('C', C);
            example_graph.edges.Add('D', D);
            example_graph.edges.Add('E', E);

            breadthFirstSearch(example_graph, 'A');

            // 防止退出
            Console.ReadKey();
        }

        private static void breadthFirstSearch(SimpleGraph graph, char start )
        {
            // 初始化队列
            Queue queue = new Queue();
            queue.Enqueue(start);
            Dictionary<char, bool> visited = new Dictionary<char, bool>();
            visited[start] = true;

            while (queue.Count != 0)
            {
                char current = (char)queue.Dequeue();
                Console.WriteLine("Visiting: " + current );
                foreach (char next in graph.neighbors(current))
                {
                    if (!visited.ContainsKey(next))
                    {
                        queue.Enqueue(next);
                        visited[next] = true;
                    }
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值