Domanda di colloquio di Google

print binary tree in level order

Risposta di colloquio

Anonimo

24 giu 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