东莞有什么比较好的网站公司,标签怎么删除wordpress,网站开发要花费多少钱,网页制作作品免费下载1. 图的概念
图是一种重要的数据结构#xff0c;用于表示节点#xff08;顶点#xff09;之间的关系。图由一组顶点和连接这些顶点的边组成。图可以是有向的#xff08;边有方向#xff09;或无向的#xff08;边没有方向#xff09;#xff0c;可以是加权的#xff…1. 图的概念
图是一种重要的数据结构用于表示节点顶点之间的关系。图由一组顶点和连接这些顶点的边组成。图可以是有向的边有方向或无向的边没有方向可以是加权的边有权重也可以是无权的。
顶点Vertex图中的基本单位代表对象。边Edge连接顶点的线可以是有向边或无向边。加权图Weighted Graph边上有权重表示成本、距离等。无向图Undirected Graph边没有方向表示双向关系。有向图Directed Graph边有方向表示单向关系。
2. 创建图的节点模型
class GraphNode
{public int Data { get; set; }public ListGraphNode Neighbors { get; set; }public GraphNode(int data){Data data;Neighbors new ListGraphNode();}
}
3. 使用及遍历
using System;namespace DataStructure
{class Program{static async Task Main(string[] args){// 创建图的节点GraphNode node1 new GraphNode(1);GraphNode node2 new GraphNode(2);GraphNode node3 new GraphNode(3);// 添加节点之间的边无向图所以相互添加node1.Neighbors.Add(node2);node2.Neighbors.Add(node1);node2.Neighbors.Add(node3);node3.Neighbors.Add(node2);// 广度优先搜索遍历图并输出节点值Console.WriteLine(广度优先搜索遍历图);BFS(node1);}static void BFS(GraphNode startNode){QueueGraphNode queue new QueueGraphNode();HashSetGraphNode visited new HashSetGraphNode();queue.Enqueue(startNode);visited.Add(startNode);while (queue.Count 0){GraphNode currentNode queue.Dequeue();Console.Write(currentNode.Data );foreach (GraphNode neighbor in currentNode.Neighbors){if (!visited.Contains(neighbor)){queue.Enqueue(neighbor);visited.Add(neighbor);}}}}}
}
运行结果