/// <summary>
        /// Test to find all Sub Graphs from a Disconnected Graph from list of all Edges and nodes of a Graph. 
        /// </summary>
        private static void Test_FindAll_SubGraphs_From_Undirected_Disconnected_Graph_ByEdges()
        {
            //     0
            //    /  \
            //   1    2
            //        /
            //       3       4-6
            //       \
            //        5       7
            UndirectedGraph<int> graph = new UndirectedGraph<int>();

            Node<int> node = new Node<int>(0);

            Node<int> node1 = new Node<int>(1);

            Node<int> node2 = new Node<int>(2);

            Node<int> node3 = new Node<int>(3);

            List<Node<int>> nodes = new List<Node<int>>();
            nodes.Add(node);
            nodes.Add(node1);
            nodes.Add(node2);
            nodes.Add(node3);
            Node<int> node4 = new Node<int>(4);
            Node<int> node5 = new Node<int>(5);
            Node<int> node6 = new Node<int>(5);
            Node<int> node7 = new Node<int>(5);
            //nodes.Add(node4);
            //nodes.Add(node5);
            //nodes.Add(node6);
            nodes.Add(node7);

            List<Edge<int>> edges = new List<Edge<int>>();

            // Add Edges  0-1
            Edge<int> edge = new Edge<int>();
            edge.StartNode = node;
            edge.EndNode = node1;

            edges.Add(edge);

            //0-2
            edges.Add(new Edge<int>()
            {
                StartNode = node,
                EndNode = node2
            });

            ////2-3
            //edges.Add(new Edge<int>()
            //{
            //    StartNode = node2,
            //    EndNode = node3
            //});

            ////3-5
            //edges.Add(new Edge<int>()
            //{
            //    StartNode = node3,
            //    EndNode = node5
            //});

            ////4-6
            //edges.Add(new Edge<int>()
            //{
            //    StartNode = node5,
            //    EndNode = node6
            //});
            // Traverse all nodes and its vertices
            List<UndirectedGraph<int>> resultGraphs = graph.GetAllConnectedSubGraphs(nodes, edges);
            foreach (UndirectedGraph<int> rgraph in resultGraphs)
            {
                Console.WriteLine("\nNew Graph ->");
                foreach (var rnode in rgraph.ConnectedNodes)
                {
                    Console.Write(rnode.Value + " ->");
                }
            }
        }