示例#1
0
        public void CharsPostOrderTraversal()
        {
            var postOrder  = new PostOrderTraversal <char>();
            var binaryTree = new BinaryTree <char>(postOrder);

            binaryTree.AddRange(Chars);
        }
示例#2
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, ""));
        }
示例#3
0
        public void NumbersPostOrderTraversal()
        {
            var postOrder  = new PostOrderTraversal <int>();
            var binaryTree = new BinaryTree <int>(postOrder);

            binaryTree.AddRange(Numbers);
        }
示例#4
0
        public void StringsPostOrderTraversal()
        {
            var postOrder  = new PostOrderTraversal <string>();
            var binaryTree = new BinaryTree <string>(postOrder);

            binaryTree.AddRange(Strings);
        }
示例#5
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();
        }
示例#6
0
        public void IterativePostOrderTraversalTest()
        {
            var expectedOutput = "4526731";

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

                BinaryTreeNode <int>     binaryTree = TestData.CreateBinaryTree();
                PostOrderTraversal <int> poOT       = new PostOrderTraversal <int>();
                poOT.IterativePostOrder(binaryTree);
                Assert.AreEqual <string>(expectedOutput, sw.ToString());
            }
        }
示例#7
0
        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");
        }
示例#8
0
        public void TestPostOrderTraversal()
        {
            // arrange
            var expected   = new int[] { 3, 7, 5, 10, 15, 12, 8 };
            var binaryTree = new BinaryTree <int> {
                8, 5, 12, 3, 7, 10, 15
            };
            var postOrder = new PostOrderTraversal <int>();

            // act
            binaryTree.SetTraversalStrategy(postOrder);
            // assert
            Assert.IsTrue(expected.SequenceEqual(binaryTree));
        }
示例#9
0
        public void TestPostOrderTraversal()
        {
            TreeNode <int>   root       = new TreeNode <int>(1);
            ITraversal <int> _traversal = new PostOrderTraversal <int>();

            root.Left       = new TreeNode <int>(2);
            root.Right      = new TreeNode <int>(3);
            root.Left.Right = new TreeNode <int>(5);
            root.Left.Left  = new TreeNode <int>(4);
            IList <int> expectedOutput = new List <int>(new List <int> {
                4, 5, 2, 3, 1
            });

            var binarytree = new BinaryTree <int>(root, _traversal);
            var output     = binarytree.Traverse();

            CollectionAssert.Equals(expectedOutput, output);
        }
示例#10
0
        public static void PostOrderTest()
        {
            var root = TreeUtils.CreateRandomTree();

            PrintUtils.PrintList(PostOrderTraversal.PostOrderIterative(root));
        }