void printNode( Node node1, int depth )
	{
	   Node node2 = node1.sons;
	   int d = depth;
	   int start = node1.edgeLabelStart;
	   int end;
	   end = getNodeLabelEnd( node1 );
	   if ( depth > 0 )
	   {
	      // print the branches coming from higher nodes
	      while ( d > 1 )
	      {
	         System.out.print("|");
	         d--;
	      }
	      System.out.print("+");
	      // print the node itself 
	      while ( start <= end )
	      {
	         System.out.print( (char)treeString[start] );
	         start++;
	      }
	      if ( debug )
	         System.out.print("  \t\t\t("+node1.edgeLabelStart+","
	        	+end+" | "+node1.pathPosition+")");
	      System.out.print("\n");
	   }
	   // recursive call for all node1's sons
	   while ( node2 != null )
	   {
	      printNode( node2, depth+1 );
	      node2 = node2.rightSibling;
	   }
	}