BFS
Using system; using system. collections. generic; using system. LINQ; using system. text; namespace LH. graphconsole {class program {Private Static bool [] visited; Private Static queue <int> rootvertexqueue = new queue <int> (); static void main (string [] ARGs) {bfstranverse ();} Private Static void bfstranverse () {int vertexnumber = 9; int edgenumber = 15; graph = New Graph (vertexnumber, edgenumber ); Graph. vertexs [0] = "A"; graph. vertexs [1] = "B"; graph. vertexs [2] = "C"; graph. vertexs [3] = "D"; graph. vertexs [4] = "e"; graph. vertexs [5] = "F"; graph. vertexs [6] = "G"; graph. vertexs [7] = "H"; graph. vertexs [8] = "I"; graph. edges [0, 1] = 1; graph. edges [0, 5] = 1; graph. edges [1, 2] = 1; graph. edges [1, 8] = 1; graph. edges [1, 6] = 1; graph. edges [2, 3] = 1; graph. edges [2, 8] = 1; graph. edges [3, 8] = 1; Graph. edges [3, 6] = 1; graph. edges [3, 7] = 1; graph. edges [3, 4] = 1; graph. edges [4, 7] = 1; graph. edges [4, 5] = 1; graph. edges [5, 6] = 1; graph. edges [6, 7] = 1; visited = new bool [vertexnumber]; for (INT I = 0; I <vertexnumber; I ++) {If (! Visited [I]) {rootvertexqueue. enqueue (I); While (rootvertexqueue. Count! = 0) {var item = rootvertexqueue. dequeue (); visited [I] = true; console. writeline ("visited vertex index:" + item); For (Int J = 0; j <vertexnumber; j ++) {If (graph. edges [item, J] = 1 &&! Visited [J]) {rootvertexqueue. enqueue (j); visited [J] = true ;}}}}} result: