Google interview question

print binary tree in level order

Interview Answer

Anonymous

24 June 2011

Its a standard BFS question. A simple solution in Java would look like the following: public static void printLevelOrder(BTNode tree){ Queue queue = new LinkedList(); queue.add(tree); while(queue.size()>0){ BTNode node = queue.remove(); System.out.print(node.value+“ ”); if(node.left!=null) queue.add(node.left); if(node.right!=null) queue.add(node.right); } } If you are asked to print new lines for each level, then you could use another queue to track levels and println if the level changes. That would be then like this: public static void printLevels(BSTNode tree) { Queue queue = new java.util.LinkedList(); Queue levels = new java.util.LinkedList(); queue.add(tree); levels.add(0); int lastLevel= 0; while (queue.size() > 0) { BSTNode node = queue.remove(); int level = levels.remove(); if(level!=lastLevel){ System.out.println(); lastLevel = level; } System.out.print(node.value.toString() + " "); if(node.left!=null){ queue.add(node.left); levels.add(level+1); } if(node.right !=null ){ queue.add(node.right); levels.add(level+1); } } }

4