Ok, here are a couple of ideas that I hope would help
Code:
public class Branch
    implements Comparable<Branch>
{
  public int compareTo ( Branch o )
  {
    //Do the comparison to check for height and direction
  }
And do the check before you growBranch
Code:
  public void growBranch ( Branch b ) throws Exception
  {
    Iterator<Branch> it = branches.iterator() ;
    while ( it.hasNext() )
    {
      if ( it.next().compareTo( b ) == 0 )
      {
	throw new Exception() ;
      }
    }
    branches.add( b ) ;
  }