Click here to Skip to main content
15,892,575 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;


public class Graph
{
public Node rootNode;
public ArrayList nodes=new ArrayList();
public int[][] adjMatrix;//Edges will be represented as adjacency Matrix
int size;
public void setRootNode(Node n)
{
this.rootNode=n;
}

public Node getRootNode()
{
return this.rootNode;
}

public void addNode(Node n)
{
nodes.add(n);
}

//This method will be called to make connect two nodes
public void connectNode(Node start,Node end)
{
if(adjMatrix==null)
{
size=nodes.size();
adjMatrix=new int[size][size];
}

int startIndex=nodes.indexOf(start);
int endIndex=nodes.indexOf(end);
adjMatrix[startIndex][endIndex]=1;
adjMatrix[endIndex][startIndex]=1;
}

private Node getUnvisitedChildNode(Node n)
{

int index=nodes.indexOf(n);
int j=0;
while(j<size)>
{
if(adjMatrix[index][j]==1 && ((Node)nodes.get(j)).visited==false)
{
return (Node)nodes.get(j);
}
j++;
}
return null;
}

//BFS traversal of a tree is performed by the bfs() function
public void bfs()
{

//BFS uses Queue data structure
Queue q=new LinkedList();
q.add(this.rootNode);
printNode(this.rootNode);
rootNode.visited=true;
while(!q.isEmpty())
{
Node n=(Node)q.remove();
Node child=null;
while((child=getUnvisitedChildNode(n))!=null)
{
child.visited=true;
printNode(child);
q.add(child);
}
}
//Clear visited property of nodes
clearNodes();
}

//DFS traversal of a tree is performed by the dfs() function
public void dfs()
{
//DFS uses Stack data structure
Stack s=new Stack();
s.push(this.rootNode);
rootNode.visited=true;
printNode(rootNode);
while(!s.isEmpty())
{
Node n=(Node)s.peek();
Node child=getUnvisitedChildNode(n);
if(child!=null)
{
child.visited=true;
printNode(child);
s.push(child);
}
else
{
s.pop();
}
}
//Clear visited property of nodes
clearNodes();
}


//Utility methods for clearing visited property of node
private void clearNodes()
{
int i=0;
while(i<size)>
{
Node n=(Node)nodes.get(i);
n.visited=false;
i++;
}
}

//Utility methods for printing the node's label
private void printNode(Node n)
{
System.out.print(n.label+" ");
}





}
Posted
Comments
OriginalGriff 21-Feb-15 1:33am    
This is not a good question - we cannot work out from that little what you are trying to do.
Remember that we can't see your screen, access your HDD, or read your mind.
This isn't "My" code: so I have no idea what your question is, or what help you need. Where did you get the code?
Use the "Improve question" widget to edit your question and provide better information.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900