二叉树的遍历是面试过程常考的一类题,而它的考法也是多种多样,但是下面这道题源自剑指offer 23题---从上到下打印二叉树。
这类题型可以归为二叉树的层序遍历。那么下面,我们就直接进入解答过程。
预备知识:
数据结构:队列的特性,二叉树的结构和相关的概念
过程:
1.将头节点推入队列中。
2.从队列头中取出一个节点,并打印
3.若该节点有左节点或者右节点,则将其也推入队列。(注意次序,从左到右,故先放入左节点,再放入右节点)
4.循环2-3步骤,直到队列为空。
个人做了个动态图,可能不是很好看,但是对理解上面的过程还是有帮助。
最后,附上代码
public class PrintBinaryTreeFromTopToBottom {
public static class Node{
public int value;
public Node left;
public Node right;
Node(int value){
this.value = value;
}
}
public static void printBinaryTree(Node head){
if (head==null){
return;
}
Queue<Node> queue = new ArrayDeque<>();
queue.offer(head);
while(!queue.isEmpty()){
head = queue.poll();
System.out.print(head.value + "\t");
if (head.left!=null){
queue.offer(head.left);
}
if (head.right!=null){
queue.offer(head.right);
}
}
}
}
好了,有点简结的文章,希望对大家有点帮助,可以在评论区留言,相互讨论,谢谢啦,