コード例 #1
0
        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();
        }
コード例 #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 CharsPreOrderTraversal()
        {
            var preOrder   = new PreOrderTraversal <char>();
            var binaryTree = new BinaryTree <char>(preOrder);

            binaryTree.AddRange(Chars);
        }
コード例 #4
0
        public void NumbersPreOrderTraversal()
        {
            var preOrder   = new PreOrderTraversal <int>();
            var binaryTree = new BinaryTree <int>(preOrder);

            binaryTree.AddRange(Numbers);
        }
コード例 #5
0
        public void StringsPreOrderTraversal()
        {
            var preOrder   = new PreOrderTraversal <string>();
            var binaryTree = new BinaryTree <string>(preOrder);

            binaryTree.AddRange(Strings);
        }
コード例 #6
0
ファイル: ParseTreeTests.cs プロジェクト: thomshib/LeetCodeG
        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);
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: kouweizhong/BinaryTree-1
        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();
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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());
            }
        }
コード例 #10
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");
        }
コード例 #11
0
        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));
        }
コード例 #12
0
ファイル: Program.cs プロジェクト: miltoncse00/EverlightTest
        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();
        }
コード例 #13
0
        public static void PreOrderTest()
        {
            var root = TreeUtils.CreateRandomTree();

            PrintUtils.PrintList(PreOrderTraversal.PreOrderIterative(root));
        }
コード例 #14
0
ファイル: BinaryTreeTests.cs プロジェクト: Marusyk/BinaryTree
        public void PreOrderTraversal_NullNode()
        {
            var results = new PreOrderTraversal <int>().Traversal(null);

            Assert.False(results.MoveNext());
        }