public void printTree() {
   root.setLevel(0);
   Queue<Node> q = new LinkedList<Node>();
   q.add(root);
   while (!q.isEmpty()) {
     Node node = q.poll();
     System.out.println(node);
     int level = node.getLevel();
     Node left = node.getLeft();
     Node right = node.getRight();
     if (left != null) {
       left.setLevel(level + 1);
       q.add(left);
     }
     if (right != null) {
       right.setLevel(level + 1);
       q.add(right);
     }
   }
 }