public void BfsCountShortestNoChildNodesMatchPath() { BfsNode.Node <string> head = new BfsNode.Node <string>("bob"); var bfs = new BfsCountShortestPath(); var result = bfs.Search(head, "bob"); int expected = 0; Assert.AreEqual(expected, result); }
public void BfsCountShortestPath() { var alex = new BfsNode.Node <string>("Alex"); var rob = new BfsNode.Node <string>("Rob"); var garry = new BfsNode.Node <string>("Garry"); // Khalid is friends with alex, rob and garry var khalid = new BfsNode.Node <string>("Khalid") { Children = new List <BfsNode.Node <string> > { alex, rob, garry } }; // Andrew if friends with Alex and Khalid var andrew = new BfsNode.Node <string>("Andrew") { Children = new List <BfsNode.Node <string> > { khalid, alex } }; // Helen is friends with Andrew var helen = new BfsNode.Node <string>("Helen") { Children = new List <BfsNode.Node <string> > { andrew } }; // Bob is friends with Helen and Khalid // Shortest path to Alex = Bob -> Khalid -> Alex. // Longer path to Alex = Bob -> helen -> Andrew -> Alex. // Even longer path Alex = Bob -> helen -> Andrew -> Khalid -> Alex. BfsNode.Node <string> head = new BfsNode.Node <string>("Bob") { Children = new List <BfsNode.Node <string> > { helen, khalid } }; var bfs = new BfsCountShortestPath(); var result = bfs.Search(head, "Alex"); int expected = 2; Assert.AreEqual(expected, result); }