public void GivenATreeWithDepth2WhenGetIsSetLeftThenRightShouldReceiveBall() { BinaryTreeModel model = new BinaryTreeModel(); var depth = 2; var node = model.CreateFullTree(depth, 0); var nodeTraversal = new PreOrderTraversal(); var defaultGateVisitor = new SetDefaultGateVisitor(); defaultGateVisitor.GateToLeft = true; nodeTraversal.Traverse(node, defaultGateVisitor); BallStrategy strategy = new BallStrategy(node); var ballCount = 2; for (int i = 0; i < ballCount; i++) { strategy.SetBall(); } var childNodeVisitor = new ChildNodeVisitor(); nodeTraversal.Traverse(node, childNodeVisitor); childNodeVisitor.ChildNodes.Count.Should().Be(4); childNodeVisitor.ChildNodes[0].HasBall.Should().BeTrue(); childNodeVisitor.ChildNodes[1].HasBall.Should().BeFalse(); childNodeVisitor.ChildNodes[2].HasBall.Should().BeTrue(); childNodeVisitor.ChildNodes[3].HasBall.Should().BeFalse(); node.GateToLeft.Should().BeTrue(); }
public RestTemplate Traverse([FromBody] NodeDto root, string type) { BSTree tree = new BSTree(toEntity(root, NodeFactoryImpl.getInstance())); List <int> turnTo = new List <int>(); BSTTraversal traversal = null; TraversalAction action = new TraversalActionImpl(turnTo); if (type.Equals("preOrder")) { traversal = new PreOrderTraversal(action); } else if (type.Equals("inOrder")) { traversal = new InOrderTraversal(action); } else if (type.Equals("postOrder")) { traversal = new PostOrderTraversal(action); } else { return(new RestTemplate((int)HttpStatusCode.BadRequest, null, "preOrder or inOrder or postOrder is required for type")); } tree.traverse(traversal); return(new RestTemplate((int)HttpStatusCode.OK, turnTo, "")); }
public void CharsPreOrderTraversal() { var preOrder = new PreOrderTraversal <char>(); var binaryTree = new BinaryTree <char>(preOrder); binaryTree.AddRange(Chars); }
public void NumbersPreOrderTraversal() { var preOrder = new PreOrderTraversal <int>(); var binaryTree = new BinaryTree <int>(preOrder); binaryTree.AddRange(Numbers); }
public void StringsPreOrderTraversal() { var preOrder = new PreOrderTraversal <string>(); var binaryTree = new BinaryTree <string>(preOrder); binaryTree.AddRange(Strings); }
public void ParseTreeTestsSuccess() { string input = "(,3,+,(,4,*,5,),)"; var tree = ParseTree.BuildParseTree(input); var result = new PreOrderTraversal().Traversal(tree); Assert.Equal("+,3,*,4,5,", result); }
private static void Main() { var binaryTree = new BinaryTree <int> { 8, 5, 12, 3, 7, 10, 15 }; var inOrder = new InOrderTraversal(); var preOrder = new PreOrderTraversal(); var postOrder = new PostOrderTraversal(); Console.Write("Pre-order : "); binaryTree.SetTraversalStrategy(preOrder); binaryTree.PrintToConsole(); Console.WriteLine(Environment.NewLine); Console.Write("Post-order : "); binaryTree.SetTraversalStrategy(postOrder); binaryTree.PrintToConsole(); Console.WriteLine(Environment.NewLine); Console.Write("In-order : "); binaryTree.SetTraversalStrategy(inOrder); binaryTree.PrintToConsole(); Console.WriteLine(Environment.NewLine); Console.WriteLine($"Count : {binaryTree.Count}"); const int remove = 10; var isRemoved = binaryTree.Remove(remove); if (isRemoved) { Console.WriteLine(Environment.NewLine); Console.WriteLine($"Node {remove} was removed, count after remove : {binaryTree.Count}"); Console.Write("Values: "); binaryTree.PrintToConsole(); } var arr = new int[binaryTree.Count]; binaryTree.CopyTo(arr, 0); Console.WriteLine(Environment.NewLine); Console.WriteLine("Copy to array: "); arr.PrintToConsole(); binaryTree.Clear(); Console.WriteLine(Environment.NewLine); Console.WriteLine($"Count after clear: {binaryTree.Count}"); Console.Write("Values after clear: "); binaryTree.PrintToConsole(); Console.WriteLine(Environment.NewLine); Console.WriteLine("Press any key to exit..."); Console.ReadLine(); }
public void GivenATreeWithDepthCheckTheDepthOfTree() { BinaryTreeModel model = new BinaryTreeModel(); var depth = 4; var node = model.CreateFullTree(depth, 0); var maxNodeVisitor = new MaxNodeVisitor(); var traversal = new PreOrderTraversal(); traversal.Traverse(node, maxNodeVisitor); maxNodeVisitor.MaxValue.Should().Be(depth); }
public void IterativePreOrderTraversalTest() { var expectedOutput = "1245367"; using (StringWriter sw = new StringWriter()) { Console.SetOut(sw); BinaryTreeNode <int> binaryTree = TestData.CreateBinaryTree(); PreOrderTraversal <int> pOT = new PreOrderTraversal <int>(); pOT.IterativePreOrder(binaryTree); Assert.AreEqual <string>(expectedOutput, sw.ToString()); } }
private static void Main() { Console.WriteLine("Represents the following tree"); Console.WriteLine(@" 4 "); Console.WriteLine(@" / \ "); Console.WriteLine(@" / \ "); Console.WriteLine(@" / \ "); Console.WriteLine(@" / \ "); Console.WriteLine(@" 2 6 "); Console.WriteLine(@" / \ / \ "); Console.WriteLine(@" / \ / \ "); Console.WriteLine(@" / \ / \ "); Console.WriteLine(@" 1 3 5 7 "); var binaryTree = new BinaryTree<int>(); binaryTree.Add(4); binaryTree.Add(2); binaryTree.Add(6); binaryTree.Add(1); binaryTree.Add(3); binaryTree.Add(5); binaryTree.Add(7); var preOrderTraversal = new PreOrderTraversal<int>(); Console.Write("PreOrder: "); preOrderTraversal.Traverse(binaryTree.Root); Console.WriteLine(); Console.Write("InOrder: "); var inOrderTraversal = new PreOrderTraversal<int>(); inOrderTraversal.Traverse(binaryTree.Root); Console.WriteLine(); Console.Write("PostOrder: "); var postOrderTraversal = new PostOrderTraversal<int>(); postOrderTraversal.Traverse(binaryTree.Root); Console.WriteLine(); Console.WriteLine("Value to find: 5"); Node<int> nodeFound = binaryTree.Find(5); if (nodeFound == null) Console.WriteLine("Value not found"); else Console.WriteLine("Value found: {0}", nodeFound.Value); Console.WriteLine(); Console.WriteLine("Value to find: 100"); Node<int> notFound = binaryTree.Find(100); Console.WriteLine(notFound == null ? "Worked as expected" : "Failed"); }
public void TestPreOrderTraversal() { // arrange var expected = new int[] { 8, 5, 3, 7, 12, 10, 15 }; var binaryTree = new BinaryTree <int> { 8, 5, 12, 3, 7, 10, 15 }; var preOrder = new PreOrderTraversal <int>(); // act binaryTree.SetTraversalStrategy(preOrder); // assert Assert.IsTrue(expected.SequenceEqual(binaryTree)); }
static void Main(string[] args) { int depth; Console.WriteLine("Please enter the depth of Tree"); depth = Convert.ToInt32(Console.ReadLine()); BinaryTreeModel model = new BinaryTreeModel(); var tree = model.CreateFullTree(depth, 1); BinaryTreeTranversal traversal = new PreOrderTraversal(); traversal.Traverse(tree); var randomGateVisitor = new RandomGateSetterVisitor(); traversal.Traverse(tree, randomGateVisitor); Console.WriteLine("Please enter number of balls"); var ballCount = Convert.ToInt32(Console.ReadLine()); BallStrategy strategy = new BallStrategy(tree); for (int i = 0; i < ballCount; i++) { strategy.SetBall(); } var childNodeVisitor = new ChildNodeVisitor(); traversal.Traverse(tree, childNodeVisitor); Console.WriteLine("Position of the hole from left to right which is empty"); for (int i = 0; i < childNodeVisitor.ChildNodes.Count; i++) { if (childNodeVisitor.ChildNodes[i].HasBall == false) { Console.WriteLine(string.Format("Position {0} is empty", i + 1)); } } Console.ReadLine(); }
public static void PreOrderTest() { var root = TreeUtils.CreateRandomTree(); PrintUtils.PrintList(PreOrderTraversal.PreOrderIterative(root)); }
public void PreOrderTraversal_NullNode() { var results = new PreOrderTraversal <int>().Traversal(null); Assert.False(results.MoveNext()); }