public void TestBFS() { INode node1 = new Node("1"); INode node2 = new Node("2"); INode node3 = new Node("3"); INode node4 = new Node("4"); INode node5 = new Node("5"); IGraph graph = new Graph(false); graph.AddNode(node1); graph.AddNode(node2); graph.AddNode(node3); graph.AddNode(node4); graph.AddNode(node5); graph.BuildEdge(node1, node2, 0); graph.BuildEdge(node1, node3, 0); graph.BuildEdge(node2, node4, 0); graph.BuildEdge(node2, node5, 0); BreadthFirstTraversal bfs = new BreadthFirstTraversal(graph, node1); TraversalResult traversalResult = bfs.Run(); string result = string.Join(",", traversalResult.Nodes.Select(node => node.ID)); Assert.Equal("1,2,3,4,5", result); }
public void Mirror_WhenCalled_AlterThePositionsOfTheNodes() { Node <string> root = new Node <string>("A"); Node <string> nodeB = new Node <string>("B"); Node <string> nodeC = new Node <string>("C"); Node <string> nodeD = new Node <string>("D"); Node <string> nodeE = new Node <string>("E"); Node <string> nodeF = new Node <string>("F"); Node <string> nodeG = new Node <string>("G"); root.SetLeftChild(nodeB); root.SetRightChild(nodeC); nodeB.SetLeftChild(nodeD); nodeB.SetRightChild(nodeE); nodeC.SetLeftChild(nodeF); nodeC.SetRightChild(nodeG); BreadthFirstTraversal <string> breadthFirstTraversal = new BreadthFirstTraversal <string>(); Assert.Equal("A,B,C,D,E,F,G", breadthFirstTraversal.Traverse(root)); BinarySearchTreeProblemSolver.Mirror(root); Assert.Equal("A,C,B,G,F,E,D", breadthFirstTraversal.Traverse(root)); }
public void BreadthDepthShouldBeTwoWhenEndNodeIsFoundTest() { // Arrange var start = Tree.Nodes["1"]; var stop = Tree.Nodes["5"]; var traversal = new BreadthFirstTraversal(); Node result = null; int depth = 0; traversal.NodeDiscovered += (sender, args) => { if (args.NewNode == stop) { args.ContinueExploring = false; args.Abort = true; result = args.NewNode; depth = args.Depth; } }; // Act traversal.Run(start); // Assert Assert.Equal(stop, result); Assert.Equal(2, depth); }
public void BreadthFirstOrderTest() { var traversal = new BreadthFirstTraversal(); var orderRecorder = new TraversalOrderRecorder(traversal); traversal.Run(Tree.Nodes["1"]); Assert.True(orderRecorder.GetIndex(Tree.Nodes["2"]) < orderRecorder.GetIndex(Tree.Nodes["4A"])); Assert.True(orderRecorder.GetIndex(Tree.Nodes["3A"]) < orderRecorder.GetIndex(Tree.Nodes["4A"])); }
public void Test1() { var vertices = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; var verticesResults = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; var edges = new[] { Tuple.Create(1, 2), Tuple.Create(1, 3), Tuple.Create(2, 4), Tuple.Create(3, 5), Tuple.Create(3, 6), Tuple.Create(4, 7), Tuple.Create(5, 7), Tuple.Create(5, 8), Tuple.Create(5, 6), Tuple.Create(8, 9), Tuple.Create(9, 10) }; Graph <int> graph = new Graph <int>(vertices, edges); var algorithms = new BreadthFirstTraversal(); var bft = algorithms.BFS(graph, 1); Assert.Equal(bft, verticesResults); }
public void BreadthFirst_Traversal() { var treeCreation = new BinarySearchTree(); var list = new List <int>() { 2, 4, 3, 1 }; var tree = treeCreation.CreateTree(list).Result; list = new BreadthFirstTraversal().Traverse(tree); Assert.AreEqual(2, list[0]); Assert.AreEqual(1, list[1]); Assert.AreEqual(3, list[2]); Assert.AreEqual(4, list[3]); }
public void BreadthFirstDepthShouldBeZeroOnFirstNode() { // Arrange var start = new Node("7"); Tree.Nodes.Add(start); var traversal = new BreadthFirstTraversal(); traversal.NodeDiscovered += (sender, args) => { Assert.Equal(0, args.Depth); }; // Act traversal.Run(start); // Assert done in NodeDiscoverd event handler. }
public static void Main() { IGraph <char> graph = new Graph <char>(); var a = graph.AddVertex('A'); var b = graph.AddVertex('B'); var c = graph.AddVertex('C'); var d = graph.AddVertex('D'); var e = graph.AddVertex('E'); graph.AddEdge(a, b, 6); graph.AddEdge(b, a, 6); graph.AddEdge(a, d, 1); graph.AddEdge(d, a, 1); graph.AddEdge(d, e, 1); graph.AddEdge(e, d, 1); graph.AddEdge(d, b, 2); graph.AddEdge(b, d, 2); graph.AddEdge(e, b, 2); graph.AddEdge(b, e, 2); graph.AddEdge(e, c, 5); graph.AddEdge(c, e, 5); graph.AddEdge(c, b, 5); graph.AddEdge(b, c, 5); Console.WriteLine("Breadth-First iterative between two vertices: "); var breadthFirstIterative = BreadthFirstTraversal <char> .BreadthFirstSearchIterative(graph, a, c); foreach (var vertex in breadthFirstIterative) { Console.WriteLine(vertex); } }
public BinarySearchTreeTest() { root = new Node <int>(8); breadthFirstTraversal = new BreadthFirstTraversal <int>(); }