剑指offer-22

题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印

思路:利用队列先进先出的特点来缓存节点数据,从根节点开始,如果存在左右孩子,则把左右孩子放到队列中,同时删除队列头部数据,把数据存入list中。直到队列为空停止。

代码(Java):

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

public class Solution {
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        ArrayList<Integer> list = new ArrayList();
        Queue<TreeNode> queue = new LinkedList();
        if(root == null){
            return list;
        }
        queue.offer(root);
        while(!queue.isEmpty()){
            TreeNode treeNode = queue.poll();
            list.add(treeNode.val);
            if(treeNode.left != null){
                queue.offer(treeNode.left);
            }
            if(treeNode.right != null){
                queue.offer(treeNode.right);
            }
        }
        return list;
    }
}

 

posted @ 2019-02-19 15:45  Luckid  阅读(81)  评论(0编辑  收藏  举报