二叉树的层次遍历之队列的使用

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        if(root==null){
            return Collections.emptyList();
        }
        List<List<Integer>> result=new ArrayList<>();
        Deque<TreeNode> queue=new ArrayDeque<>();
        queue.offer(root);
        while(!queue.isEmpty()){
            //当前队列的元素个数,也就是该层节点元素的个数
            int size=queue.size();
            //集合存储当前层的元素
            List<Integer> list=new ArrayList<>();
            for(int i=0;i<size;i++){
                //出队操作
                TreeNode temp=queue.poll();
                //将出队列的元素添加到当前层的集合当中
                list.add(temp.val);
                //如果出队的元素左节点不为空,则入队列
                if(temp.left!=null){
                    queue.offer(temp.left);
                }
                //如果出队的元素右节点不为空,则入队列
                if(temp.right!=null){
                    queue.offer(temp.right);
                }
            }
            result.add(list);
        }
        return result;
    }
}

 

posted @ 2019-07-11 16:51  bug_killer  阅读(721)  评论(0编辑  收藏  举报