public void DepthFirstTraversal_VisitPost()
        {
            var generalTree     = GetTestTree();
            var trackingVisitor = new AssertionVisitor <int>();
            var postVisitor     = new PostOrderVisitor <int>(trackingVisitor);

            generalTree.DepthFirstTraversal(postVisitor);
            trackingVisitor.AssertTracked(9, 12, 2, 13, 3, 1, 5);
        }
Example #2
0
        public void Post()
        {
            var binaryTree      = GetTestTree();
            var trackingVisitor = new TrackingVisitor <int>();
            var postVisitor     = new PostOrderVisitor <int>(trackingVisitor);

            binaryTree.DepthFirstTraversal(postVisitor);

            var tracks = trackingVisitor.TrackingList;

            Assert.AreEqual(tracks[0], 9);
            Assert.AreEqual(tracks[1], 12);
            Assert.AreEqual(tracks[2], 2);
            Assert.AreEqual(tracks[3], 13);
            Assert.AreEqual(tracks[4], 3);
            Assert.AreEqual(tracks[5], 5);
        }
Example #3
0
        public void Post()
        {
            var binaryTree = GetTestTree();
            var trackingVisitor = new TrackingVisitor<int>();
            var postVisitor = new PostOrderVisitor<int>(trackingVisitor);

            binaryTree.DepthFirstTraversal(postVisitor);

            var tracks = trackingVisitor.TrackingList;

            Assert.AreEqual(tracks[0], 9);
            Assert.AreEqual(tracks[1], 12);
            Assert.AreEqual(tracks[2], 2);
            Assert.AreEqual(tracks[3], 13);
            Assert.AreEqual(tracks[4], 3);
            Assert.AreEqual(tracks[5], 5);
        }
Example #4
0
        public void TestDepthFirstVisitPost()
        {
            BinaryTree <int>       t = GetTestTree();
            TrackingVisitor <int>  trackingVisitor = new TrackingVisitor <int>();
            PostOrderVisitor <int> postVisitor     = new PostOrderVisitor <int>(trackingVisitor);

            t.DepthFirstTraversal(postVisitor);

            VisitableList <int> tracks = trackingVisitor.TrackingList;

            Assert.AreEqual(tracks[0], 9);
            Assert.AreEqual(tracks[1], 12);
            Assert.AreEqual(tracks[2], 2);
            Assert.AreEqual(tracks[3], 13);
            Assert.AreEqual(tracks[4], 3);
            Assert.AreEqual(tracks[5], 5);
        }
Example #5
0
        public void UndirectedPostVisit()
        {
            var graph   = new Graph <int>(false);
            var vertex1 = new Vertex <int>(1);
            var vertex2 = new Vertex <int>(2);
            var vertex3 = new Vertex <int>(3);
            var vertex4 = new Vertex <int>(4);
            var vertex5 = new Vertex <int>(5);
            var vertex6 = new Vertex <int>(6);
            var vertex7 = new Vertex <int>(7);

            graph.AddVertex(vertex1);
            graph.AddVertex(vertex2);
            graph.AddVertex(vertex3);
            graph.AddVertex(vertex4);
            graph.AddVertex(vertex5);
            graph.AddVertex(vertex6);
            graph.AddVertex(vertex7);

            graph.AddEdge(vertex1, vertex2);
            graph.AddEdge(vertex1, vertex3);
            graph.AddEdge(vertex1, vertex5);
            graph.AddEdge(vertex5, vertex3);

            graph.AddEdge(vertex3, vertex6);
            graph.AddEdge(vertex3, vertex4);
            graph.AddEdge(vertex2, vertex7);

            var trackingVisitor  = new TrackingVisitor <Vertex <int> >();
            var postOrderVisitor = new PostOrderVisitor <Vertex <int> >(trackingVisitor);

            graph.DepthFirstTraversal(postOrderVisitor, vertex1);

            Assert.AreEqual(trackingVisitor.TrackingList.Count, graph.Vertices.Count);

            Assert.AreEqual(trackingVisitor.TrackingList[0].Data, 7);
            Assert.AreEqual(trackingVisitor.TrackingList[1].Data, 2);
            Assert.AreEqual(trackingVisitor.TrackingList[2].Data, 5);
            Assert.AreEqual(trackingVisitor.TrackingList[3].Data, 6);
            Assert.AreEqual(trackingVisitor.TrackingList[4].Data, 4);
            Assert.AreEqual(trackingVisitor.TrackingList[5].Data, 3);
            Assert.AreEqual(trackingVisitor.TrackingList[6].Data, 1);
        }
        public void DirectedPostVisit()
        {
            var graph = new Graph<int>(true);
            var vertex1 = new Vertex<int>(1);
            var vertex2 = new Vertex<int>(2);
            var vertex3 = new Vertex<int>(3);
            var vertex4 = new Vertex<int>(4);
            var vertex5 = new Vertex<int>(5);
            var vertex6 = new Vertex<int>(6);
            var vertex7 = new Vertex<int>(7);

            graph.AddVertex(vertex1);
            graph.AddVertex(vertex2);
            graph.AddVertex(vertex3);
            graph.AddVertex(vertex4);
            graph.AddVertex(vertex5);
            graph.AddVertex(vertex6);
            graph.AddVertex(vertex7);

            graph.AddEdge(vertex1, vertex2);
            graph.AddEdge(vertex1, vertex3);
            graph.AddEdge(vertex1, vertex5);
            graph.AddEdge(vertex5, vertex3);

            graph.AddEdge(vertex3, vertex6);
            graph.AddEdge(vertex3, vertex4);
            graph.AddEdge(vertex2, vertex7);

            var trackingVisitor = new TrackingVisitor<Vertex<int>>();
            var postOrderVisitor = new PostOrderVisitor<Vertex<int>>(trackingVisitor);

            graph.DepthFirstTraversal(postOrderVisitor, vertex1);

            Assert.AreEqual(trackingVisitor.TrackingList.Count, graph.Vertices.Count);

            Assert.AreEqual(trackingVisitor.TrackingList[0].Data, 7);
            Assert.AreEqual(trackingVisitor.TrackingList[1].Data, 2);
            Assert.AreEqual(trackingVisitor.TrackingList[2].Data, 6);
            Assert.AreEqual(trackingVisitor.TrackingList[3].Data, 4);
            Assert.AreEqual(trackingVisitor.TrackingList[4].Data, 3);
            Assert.AreEqual(trackingVisitor.TrackingList[5].Data, 5);
            Assert.AreEqual(trackingVisitor.TrackingList[6].Data, 1);
        }