题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入图4.5中的二叉树,则依次打印出8、6、10、5、7、9、11。
算法思路:如果子树不为空,就放入队列中;下一个循环输出队头,然后再把队头出队,直到队列为空。
public static void printFromTopToBottom(BinaryTreeNode head){
if(head == null){
return;
}
Queue<BinaryTreeNode> queue = new ArrayDeque<>();
queue.add(head);
while (!queue.isEmpty()){
BinaryTreeNode node = queue.peek();
queue.remove();
System.out.println(node.value);
if(null != node.left){
queue.add(node.left);
}
if(null != node.right){
queue.add(node.right);
}
}
}