static void DoGraphThingies()
        {
            int    graphNum = 2;
            Graph1 g        = CreateGraph(graphNum);

            g.PrintGraph();

            bool recursive = true;

            g.DFSTraversal("b", recursive);
            g.DFSTraversal("c", recursive);

            g.DFSTraversal("a", recursive);
            g.DFSTraversal("a", !recursive);

            g.BFSTraversal("a");
        }
        static Graph1 CreateGraph(int graphNum)
        {
            Graph1 g = new Graph1();

            if (graphNum == 1)
            {
                g.AddEdge("a", "b");
                g.AddEdge("b", "c");
                g.AddEdge("b", "d");
                g.AddEdge("d", "c");
                g.AddEdge("d", "c");
                g.AddEdge("c", "a");
            }
            else if (graphNum == 2)
            {
                g.AddEdge("a", "b");
                g.AddEdge("b", "c");
                g.AddEdge("c", "d");
                g.AddEdge("d", "d1");
                g.AddEdge("d1", "d2");
                g.AddEdge("c", "c1");
                g.AddEdge("c1", "c2");
            }
            else if (graphNum == 3)                     // this one is essentially a binary tree
            {
                g.AddEdge("a", "b");
                g.AddEdge("a", "c");
                g.AddEdge("b", "d");
                g.AddEdge("b", "e");
                g.AddEdge("c", "f");
                g.AddEdge("c", "g");
                g.AddEdge("d", "h");
                g.AddEdge("d", "i");
            }
            else
            {
                g.AddEdge("a", "b");
                g.AddEdge("a", "c");
            }
            return(g);
        }