Import java. util. *;/*** in this example, we use the graph Traversal method, let me understand the graph traversal * Created on 2013-11-18 * @ version 0.1 */public class DeptSearch {public static void main (String args []) {// construct the Node object NodeT a = new NodeT ("a"); NodeT B = new NodeT ("B"); NodeT c = new NodeT ("c "); nodeT d = new NodeT ("d"); NodeT e = new NodeT ("e"); NodeT f = new NodeT ("f "); nodeT g = new NodeT ("g"); NodeT h = new NodeT ("h"); ArcT AB = new ArcT (a, B ); arcT ac = new ArcT (a, c); ArcT Ad = new ArcT (a, d); ArcT ah = new ArcT (a, h); ArcT bc = new ArcT (B, c); ArcT de = new ArcT (d, e); ArcT ef = new ArcT (e, f); ArcT eg = new ArcT (e, g); ArcT hg = new ArcT (h, g ); // establish their relationship. outgoing. add (AB);. outgoing. add (ac);. outgoing. add (ad);. outgoing. add (ah); B. outgoing. add (bc); d. outgoing. add (de); e. outgoing. add (ef); e. outgoing. add (eg); h. outgoing. add (hg); // construct the object DeptSearch search = new DeptSearch (); // traverse the System in breadth. out. println ("Breadth Traversal: "); search. widthSearch (a); // traverse System in depth. out. println ("Deep traversal:"); List <NodeT> visited = new ArrayList <NodeT> (); search. deptFisrtSearch (a, visited);}/** method of deep sorting * the method of this method is as follows: keep searching for one node in depth, until it has no node * the set of elements accessed by the current element * visited of the cur */void deptFisrtSearch (NodeT cur, List <NodeT> visited) {// accessed, if (visited. contains (cur) return; visited. add (cur); System. out. println ("This traversal is:" + cur. word); for (int I = 0; I <c Ur. outgoing. size (); I ++) {// access the end point of the current vertex deptFisrtSearch (cur. outgoing. get (I ). end, visited) ;}}/*** method of sorting by breadth * The method is used to access the graph by hierarchy. The first layer is followed by the second layer, and so on * @ param start from which to sort the logs */void widthSearch (NodeT start) {// record all accessed elements Set <NodeT> visited = new HashSet <NodeT> (); // use a Queue to store all the elements to be accessed in sequence: Queue <NodeT> q = new Queue list <NodeT> (); // Add the current element to the end of the Queue q. offer (start); while (! Q. isEmpty () {NodeT cur = q. poll (); // if (! Visited. contains (cur) {visited. add (cur); System. out. println ("the queried node is:" + cur. word); for (int I = 0; I <cur. outgoing. size (); I ++) {// Add its next layer to the queue q. offer (cur. outgoing. get (I ). end) ;}}}}/*** set of all links of vertex */class NodeT {/*/List <ArcT> outgoing; // String word; public NodeT (String word) {this. word = word; outgoing = new ArrayList <ArcT> () ;}/ *** relationship between a single graph vertex */class ArcT {NodeT start, end;/* start Point, end Point */public ArcT (NodeT start, NodeT end) {this. start = start; this. end = end ;}}