<剑指offer> 第20题

题目:

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印

思路:

每一次打印一个节点的时候,如果该节点有子节点,则把字节点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的节点,重复前面的操作,直到队列中所有的节点都打印出来

代码实现:

import java.util.LinkedList;
import java.util.Queue;

public class Twentieth {
    public class BinaryTreeNode{
        BinaryTreeNode left;
        BinaryTreeNode right;
        int val;
    }
    public static void printBinaryTreeNode(BinaryTreeNode root){
        if(root != null){
            Queue<BinaryTreeNode> list = new LinkedList<>();
            list.add(root);
            BinaryTreeNode cur;
            
            while(!list.isEmpty()){
                cur = list.remove();
                System.out.print(cur.val + " ");
                
                if(cur.left != null){
                    list.add(cur.left);
                }
                if(cur.right != null){
                    list.add(cur.right);
                }
            }
        }
    }
}

 

posted @ 2019-08-10 15:49  HarSong13  阅读(116)  评论(0编辑  收藏  举报