網站建設策劃書google ads 推廣
1. 圖的概念
圖是一種重要的數(shù)據結構,用于表示節(jié)點(頂點)之間的關系。圖由一組頂點和連接這些頂點的邊組成。圖可以是有向的(邊有方向)或無向的(邊沒有方向),可以是加權的(邊有權重)也可以是無權的。
- 頂點(Vertex):圖中的基本單位,代表對象。
- 邊(Edge):連接頂點的線,可以是有向邊或無向邊。
- 加權圖(Weighted Graph):邊上有權重(表示成本、距離等)。
- 無向圖(Undirected Graph):邊沒有方向,表示雙向關系。
- 有向圖(Directed Graph):邊有方向,表示單向關系。
2. 創(chuàng)建圖的節(jié)點模型
class GraphNode
{public int Data { get; set; }public List<GraphNode> Neighbors { get; set; }public GraphNode(int data){Data = data;Neighbors = new List<GraphNode>();}
}
3. 使用及遍歷
using System;namespace DataStructure
{class Program{static async Task Main(string[] args){// 創(chuàng)建圖的節(jié)點GraphNode node1 = new GraphNode(1);GraphNode node2 = new GraphNode(2);GraphNode node3 = new GraphNode(3);// 添加節(jié)點之間的邊(無向圖,所以相互添加)node1.Neighbors.Add(node2);node2.Neighbors.Add(node1);node2.Neighbors.Add(node3);node3.Neighbors.Add(node2);// 廣度優(yōu)先搜索遍歷圖并輸出節(jié)點值Console.WriteLine("廣度優(yōu)先搜索遍歷圖:");BFS(node1);}static void BFS(GraphNode startNode){Queue<GraphNode> queue = new Queue<GraphNode>();HashSet<GraphNode> visited = new HashSet<GraphNode>();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);}}}}}
}
運行結果