private int traverse(BinaryGraph graph) {
   if (graph.getLeft() == null && graph.getRight() == null) {
     return 0;
   }
   if (!_visited.contains(graph)) {
     _visited.add(graph);
     if (graph.getLeft() != null && graph.getRight() != null) {
       _steps++;
     }
   }
   return Math.max(traverse(graph.getLeft()), traverse(graph.getRight())) + 1;
 }