Question d’entretien chez Google

print binary tree in level order

Réponse à la question d'entretien

Utilisateur anonyme

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