public void DoNtReturnValuesFromInsideTheTree()
        {
            var tree = new BinaryTreeNode <int>(1)
            {
                Left = new BinaryTreeNode <int>(2)
                {
                    Left = new BinaryTreeNode <int>(3)
                    {
                        Left  = new BinaryTreeNode <int>(4),
                        Right = new BinaryTreeNode <int>(5)
                    },
                    Right = new BinaryTreeNode <int>(-1)
                    {
                        Left  = new BinaryTreeNode <int>(6),
                        Right = new BinaryTreeNode <int>(7)
                    }
                },
                Right = new BinaryTreeNode <int>(13)
                {
                    Left = new BinaryTreeNode <int>(-1)
                    {
                        Left  = new BinaryTreeNode <int>(8),
                        Right = new BinaryTreeNode <int>(9)
                    },
                    Right = new BinaryTreeNode <int>(12)
                    {
                        Left  = new BinaryTreeNode <int>(10),
                        Right = new BinaryTreeNode <int>(11)
                    }
                }
            };
            var result = BoundaryOfBinaryTree <int> .Run(tree);

            Assert.AreEqual(new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }, result);
        }
        public void TreeWithOneNode()
        {
            var result = BoundaryOfBinaryTree <int> .Run(new BinaryTreeNode <int>(1));

            Assert.AreEqual(new[] { 1 }, result);

            Assert.That(3 / 2, Is.EqualTo(1));
        }
        public void OnlyRightNodesInTheTree()
        {
            var tree = new BinaryTreeNode <int>(1)
            {
                Right = new BinaryTreeNode <int>(3)
                {
                    Right = new BinaryTreeNode <int>(2)
                }
            };
            var result = BoundaryOfBinaryTree <int> .Run(tree);

            Assert.AreEqual(new[] { 1, 2, 3 }, result);
        }
        public void RightLeavesShouldNtReturnBeforeLeftNodes()
        {
            var tree = new BinaryTreeNode <int>(1)
            {
                Right = new BinaryTreeNode <int>(4)
                {
                    Left  = new BinaryTreeNode <int>(2),
                    Right = new BinaryTreeNode <int>(3)
                }
            };
            var result = BoundaryOfBinaryTree <int> .Run(tree);

            Assert.AreEqual(new[] { 1, 2, 3, 4 }, result);
        }
        public void FullTree()
        {
            var tree = new BinaryTreeNode <int>(1)
            {
                Left = new BinaryTreeNode <int>(2)
                {
                    Left  = new BinaryTreeNode <int>(3),
                    Right = new BinaryTreeNode <int>(4)
                },
                Right = new BinaryTreeNode <int>(7)
                {
                    Left  = new BinaryTreeNode <int>(5),
                    Right = new BinaryTreeNode <int>(6)
                }
            };
            var result = BoundaryOfBinaryTree <int> .Run(tree);

            Assert.AreEqual(new[] { 1, 2, 3, 4, 5, 6, 7 }, result);
        }
        public void NullTree()
        {
            var result = BoundaryOfBinaryTree <int> .Run(null);

            Assert.IsEmpty(result);
        }