コード例 #1
0
        public void TestPostorderTraversal()
        {
            var root = TreeNode.BuildBSTFromArray(new int[] { 3, 5, 8, 4, 1, 2, 9 });
            var r    = BinaryTreeTravle.PostorderTraversal_recursive(root);

            Assert.AreEqual(r[0], 2);
            Assert.AreEqual(r[3], 9);
            Assert.AreEqual(r[6], 3);

            root = TreeNode.BuildBSTFromArray(new int[] { 6, 3, 8, 4, 1, 2, 7 });
            r    = BinaryTreeTravle.PostorderTraversal_Iterations(root);
            Assert.AreEqual(r[0], 2);
            Assert.AreEqual(r[3], 3);
            Assert.AreEqual(r[6], 6);
        }
コード例 #2
0
        public void TestZigzagLevelOrderTraversal()
        {
            var root = new TreeNode(3);

            root.Left        = new TreeNode(9);
            root.Right       = new TreeNode(20);
            root.Right.Left  = new TreeNode(15);
            root.Right.Right = new TreeNode(7);

            var r = BinaryTreeTravle.AddZigzagLevelOrderTraversal(root);

            Assert.AreEqual(r.Count, 3);
            Assert.AreEqual(r[1][0], 20);
            Assert.AreEqual(r[2][0], 15);
        }
コード例 #3
0
        public void TestFlattenBinaryTreeToLinkedList()
        {
            var root = new TreeNode(1);

            root.Left  = new TreeNode(2);
            root.Right = new TreeNode(5);

            root.Left.Left   = new TreeNode(3);
            root.Left.Right  = new TreeNode(4);
            root.Right.Right = new TreeNode(6);

            BinaryTreeTravle.FlattenBinaryTreeToLinkedList(root);

            Assert.AreEqual(root.Val, 1);
            Assert.AreEqual(root.Right.Val, 2);
            Assert.AreEqual(root.Right.Right.Right.Val, 4);
            Assert.AreEqual(root.Right.Right.Right.Right.Right.Val, 6);
        }
コード例 #4
0
        public void TestLevelOrderTraversal()
        {
            var root = new TreeNode(3);

            root.Left        = new TreeNode(9);
            root.Right       = new TreeNode(20);
            root.Right.Left  = new TreeNode(15);
            root.Right.Right = new TreeNode(7);

            var r = BinaryTreeTravle.LevelOrderTraversal_loop(root);

            Assert.AreEqual(r.Count, 3);
            Assert.AreEqual(r[2][0], 15);
            Assert.AreEqual(r[1][1], 20);


            r = BinaryTreeTravle.LevelOrderTraversal_recursive(root);
            Assert.AreEqual(r.Count, 3);
            Assert.AreEqual(r[2][0], 15);
            Assert.AreEqual(r[1][1], 20);
        }
コード例 #5
0
        public void TestInorderTraversal()
        {
            var root = TreeNode.BuildBSTFromArray(new int[] { 3, 5, 8, 4, 1, 2, 9 });
            var r    = BinaryTreeTravle.InorderTraversal_Recursive(root);

            Assert.AreEqual(r[0], 1);
            Assert.AreEqual(r[3], 4);
            Assert.AreEqual(r[6], 9);


            root = TreeNode.BuildBSTFromArray(new int[] { 3, 5, 8, 4, 1, 2, 7 });
            r    = BinaryTreeTravle.InorderTraversal_Stack(root);
            Assert.AreEqual(r[0], 1);
            Assert.AreEqual(r[3], 4);
            Assert.AreEqual(r[6], 8);

            root = TreeNode.BuildBSTFromArray(new int[] { 6, 3, 8, 4, 1, 2, 7 });
            r    = BinaryTreeTravle.InorderTraversal_Morris(root);
            Assert.AreEqual(r[0], 1);
            Assert.AreEqual(r[3], 4);
            Assert.AreEqual(r[6], 8);
        }