BFS - Breadth First Search
The below is sample code to iterate through graph nodes using breadth first search -
//build graph nodes
var tree = new Dictionary<int, List<int>>();
tree.Add(1, new List<int> { 2, 3, 4 });
tree.Add(2, new List<int> { 5 });
tree.Add(3, new List<int> { 6, 7});
tree.Add(4, new List<int> { 8 });
tree.Add(5, new List<int> { 9 });
tree.Add(6, new List<int> { 10 });
//get root element of graph
Queue q = new Queue();
q.Enqueue(tree.ElementAt(0).Key);
HashSet<int> visitiedNode = new HashSet<int>();
//iterate queue to visit nodes
while(q.Count > 0)
{
//dequeue 1st element
var item = Convert.ToInt32(q.Dequeue());
//check if element already visited
if (visitiedNode.Contains(item))
continue;
//add element to visited list
visitiedNode.Add(item);
Console.WriteLine(item);
//get next adjecent nodes
tree.TryGetValue(item, out List<int> adjcentNodes);
//enqueue new nodes to the queue
if (adjcentNodes != null)
adjcentNodes.ForEach(a => q.Enqueue(a));
}
This code iterates through each node and can be modified to check on given key.
Comments