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); }
public List <TKey> Traverse(OrderTraversal order) => this.Traversal.Traverse(this.Root, order);