示例#1
0
        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, ""));
        }
示例#2
0
        public static void InOrderTest()
        {
            var root = TreeUtils.CreateRandomTree();

            InOrderTraversal.InOrderTraverselIterative(root);
            Console.WriteLine();
            InOrderTraversal.InOrderTraverselIterative(root);
        }
示例#3
0
        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();
        }
示例#4
0
        public void InOrderTraversal1()
        {
            var iot  = new InOrderTraversal <int>();
            var tree = BuildBunchOfIntNodes();

            Assert.False(iot.Contains(tree, 1));
            Assert.False(iot.Contains(null, 1));
            Assert.True(iot.Contains(tree, 10));
            Assert.True(iot.Contains(tree, 25));
            Assert.False(iot.Contains(tree, 125));
        }
示例#5
0
        public void IterativeInOrderTraversalTest()
        {
            var expectedOutput = "4251637";

            using (StringWriter sw = new StringWriter())
            {
                Console.SetOut(sw);

                BinaryTreeNode <int>   binaryTree = TestData.CreateBinaryTree();
                InOrderTraversal <int> iOT        = new InOrderTraversal <int>();
                iOT.IterativeInOrder(binaryTree);
                Assert.AreEqual <string>(expectedOutput, sw.ToString());
            }
        }
示例#6
0
        public void TestInOrderTraversal()
        {
            // arrange
            var expected   = new int[] { 3, 5, 7, 8, 10, 12, 15 };
            var binaryTree = new BinaryTree <int> {
                8, 5, 12, 3, 7, 10, 15
            };
            var inOrder = new InOrderTraversal <int>();

            // act
            binaryTree.SetTraversalStrategy(inOrder);
            // assert
            Assert.IsTrue(expected.SequenceEqual(binaryTree));
        }