public void PostorderIterativeTest()
        {
            // Test Empty tree
            root = null;
            Assert.Equal <List <int> >(new List <int>(), BinaryTreeIterativeTraversal.PostorderIterativeTraverse(root));

            //           10
            //        /     \
            //       4       9
            //      /  \    /  \
            //     2    3  7    8
            //    /       /
            //   1       6
            //            \
            //             5
            root                       = new BinaryTreeIterativeTraversal.TreeNode(10);
            root.left                  = new BinaryTreeIterativeTraversal.TreeNode(4);
            root.right                 = new BinaryTreeIterativeTraversal.TreeNode(9);
            root.left.left             = new BinaryTreeIterativeTraversal.TreeNode(2);
            root.left.right            = new BinaryTreeIterativeTraversal.TreeNode(3);
            root.right.left            = new BinaryTreeIterativeTraversal.TreeNode(7);
            root.right.right           = new BinaryTreeIterativeTraversal.TreeNode(8);
            root.left.left.left        = new BinaryTreeIterativeTraversal.TreeNode(1);
            root.right.left.left       = new BinaryTreeIterativeTraversal.TreeNode(6);
            root.right.left.left.right = new BinaryTreeIterativeTraversal.TreeNode(5);

            List <int> postorder = BinaryTreeIterativeTraversal.PostorderIterativeTraverse(root);

            for (int i = 0; i < postorder.Count; i++)
            {
                Assert.Equal(expectedList[i], postorder[i]);
            }
        }
예제 #2
0
        public static bool IsBst(BinaryNode rootNode)
        {
            var orderedNodes = BinaryTreeIterativeTraversal.Visit(rootNode);

            for (int i = 1; i < orderedNodes.Count; i++)
            {
                if (orderedNodes[i - 1] > orderedNodes[i])
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #3
0
        public void Test1()
        {
            var root = new BinaryNode()
            {
                Value = 10
            };

            root.Left = new BinaryNode()
            {
                Value = 2
            };

            var fifteen = new BinaryNode()
            {
                Value = 15
            };

            fifteen.Left = new BinaryNode()
            {
                Value = 12
            };
            fifteen.Right = new BinaryNode()
            {
                Value = 18
            };

            root.Right = fifteen;

            var expectedNodes = new List <int>()
            {
                2, 10, 12, 15, 18
            };
            var orderedNodes = BinaryTreeIterativeTraversal.Visit(root);

            Assert.That(orderedNodes.SequenceEqual(expectedNodes), Is.True);
        }
        public void PreorderIterativeTest()
        {
            // Test Empty tree
            root = null;
            Assert.Equal <List <int> >(new List <int>(), BinaryTreeIterativeTraversal.PreorderIterativeTraverse(root));

            // 1. Arrange
            // Build up a binary tree
            //           1
            //        /     \
            //       2       6
            //      /  \    /  \
            //     3    5  7    10
            //    /       /
            //   4       8
            //            \
            //             9
            root                       = new BinaryTreeIterativeTraversal.TreeNode(1);
            root.left                  = new BinaryTreeIterativeTraversal.TreeNode(2);
            root.right                 = new BinaryTreeIterativeTraversal.TreeNode(6);
            root.left.left             = new BinaryTreeIterativeTraversal.TreeNode(3);
            root.left.right            = new BinaryTreeIterativeTraversal.TreeNode(5);
            root.right.left            = new BinaryTreeIterativeTraversal.TreeNode(7);
            root.right.right           = new BinaryTreeIterativeTraversal.TreeNode(10);
            root.right.left.left       = new BinaryTreeIterativeTraversal.TreeNode(8);
            root.right.left.left.right = new BinaryTreeIterativeTraversal.TreeNode(9);
            root.left.left.left        = new BinaryTreeIterativeTraversal.TreeNode(4);

            // 2. Assert
            List <int> preorder = BinaryTreeIterativeTraversal.PreorderIterativeTraverse(root);

            for (int i = 0; i < preorder.Count; i++)
            {
                Assert.Equal(expectedList[i], preorder[i]);
            }
        }