public void paint(Graphics g)
  {
    super.paint(g);
    Graphics2D g2 = (Graphics2D) g;
    Dimension d = getSize();
    g2.setPaint(Color.red);
    int maxDepth = 0;
    for(int i = 0; i < nodes.size();i++)
    {
      if( nodes.get(i).getLevel() > maxDepth)
      {
	maxDepth = nodes.get(i).getLevel();
      }
    }
    int textYSeperation = d.height/(maxDepth+1);
    ArrayList<DFSDisplayNode> nodesAtDepth; 
    for(int currentDepth = 0; currentDepth < (maxDepth+1); currentDepth++){
      nodesAtDepth = new ArrayList<DFSDisplayNode>();
      for(int i = 0; i < nodes.size();i++){
       if(nodes.get(i).getLevel()==currentDepth){
	 nodesAtDepth.add(nodes.get(i));
       }
      }
      int textXSeperation = d.width/(nodesAtDepth.size()+1);
      for(int nodeAtDepthIndex = 0; nodeAtDepthIndex < nodesAtDepth.size(); nodeAtDepthIndex++){
	DFSDisplayNode dNode = nodesAtDepth.get(nodeAtDepthIndex);
	dNode.setXPos(textXSeperation*(nodeAtDepthIndex+1));
	//dNode.setYPos(d.height - textYSeperation*(currentDepth));
	dNode.setYPos(textYSeperation*(currentDepth));
	g2.drawChars(dNode.getInstruction().toCharArray(), 0, dNode.getInstruction().toCharArray().length,dNode.getXPos(), dNode.getYPos());
	if(dNode.getParent() != null){
	  g2.draw(new Line2D.Double(dNode.getXPos(), dNode.getYPos(), dNode.getParent().getXPos(), dNode.getParent().getYPos()));
	}
      }
    }
    String outputText = "sample instruction";
    
  }