public List <TKey> Traverse(TNode root, OrderTraversal order)
        {
            var resPath = new List <TKey>();

            if (root is null)
            {
                return(resPath);
            }

            switch (order)
            {
            case OrderTraversal.PRE:
                TraversePre(root, ref resPath);
                break;

            case OrderTraversal.IN:
                TraverseIn(root, ref resPath);
                break;

            case OrderTraversal.POST:
                TraversePost(root, ref resPath);
                break;

            default:
                break;
            }

            return(resPath);
        }
        public void PrintTree <TKey, TNode>(BinTree <TKey, TNode> tree, OrderTraversal order = OrderTraversal.IN)
            where TKey : IComparable where TNode : BinNode <TKey, TNode>, new()
        {
            List <TKey> res = tree.Traverse(order);

            foreach (var value in res)
            {
                Console.Write(value + "  ");
            }

            Console.WriteLine();
        }
        public void TestPreOrderTraversal()
        {
            //Arrange
            var sut = new OrderTraversal(); //sut: system under test

            //Act
            var orderList1 = sut.PreOrderTraversal(new BuildBinary().CreateBinaryTree(new int?[] { 1, 2, 3, 4, null, 6, 7, 8, 9 }));
            var orderList2 = sut.IterationPreOrderTraversal(new BuildBinary().CreateBinaryTree(new int?[] { 1, 2, 3, 4, null, 6, 7, 8, 9 }));

            //Assert
            Assert.Equal("1,2,4,8,9,3,6,7", string.Join(",", orderList1));
            Assert.Equal("1,2,4,8,9,3,6,7", string.Join(",", orderList2));
        }
        public void TestMiddleOrderTraversal()
        {
            //Arrange
            var sut = new OrderTraversal(); //sut: system under test

            //Act
            var orderList1 = sut.InorderTraversal(new BuildBinary().CreateBinaryTree(new int?[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }));
            var orderList2 = sut.IterationInorderTraversal(new BuildBinary().CreateBinaryTree(new int?[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }));

            //Assert
            Assert.Equal("8,4,9,2,10,5,1,6,3,7", string.Join(",", orderList1));
            Assert.Equal("8,4,9,2,10,5,1,6,3,7", string.Join(",", orderList2));
        }
        public List <TKey> Traverse(TNode root, OrderTraversal order)
        {
            ResPath = new List <TKey>();

            switch (order)
            {
            case OrderTraversal.PRE:
                TraversePre(root);
                break;

            case OrderTraversal.IN:
                TraverseIn(root);
                break;

            case OrderTraversal.POST:
                TraversePost(root);
                break;

            default:
                break;
            }

            return(ResPath);
        }
Exemple #6
0
 public List <TKey> Traverse(OrderTraversal order) => this.Traversal.Traverse(this.Root, order);