public static <T> void printTreeLevelOrder(BinNode<T> t) {
if (t == null) return;
BinNode<T> tmp;
int height = getHeight(t);
Queue<BinNode<T>> q = new Queue<BinNode<T>>();
q.insert(t);
int level = 0;
while (level < height) {
int nodesInLevel = (int) Math.pow(2, level);
int firstSpace = (int) Math.pow(2,height–level) -1;
int betweenSpace = (int) Math.pow(2, height – level + 1)-1 ;
printSpaces(firstSpace);
for (int i=0;i<nodesInLevel;i++) {
tmp = q.remove();
if (tmp != null) {
System.out.print(tmp.getValue());
q.insert(tmp.getLeft());
q.insert(tmp.getRight());
}
else {
System.out.print(" ");
q.insert(null);
q.insert(null);
}
printSpaces(betweenSpace);
}
System.out.println(); // next level line
level++;
}
}
