32、用队列实现层序遍历-102.二叉树的层序遍历

题目描述

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

思路:之前在剑指Offer中做过

使用队列先入先出的性质,实现层序遍历!

DFS(深度优先策略)和BFS(广度优先策略)!

BFS:常用的有两种场景:二叉树的层序遍历、最短路径问题

代码

1)队列

class Solution {
    public List> levelOrder(TreeNode root) {
        List> res = new ArrayList<>();//结果集
        Queue queue = new LinkedList<>();//LinkedList也是双向队列!实现层序的逻辑
        if(root == null) return res;
        queue.offer(root);
        while(!queue.isEmpty()){
            //每次进来,先记录此时 队列的长度
            int size = queue.size();//此时循环的次数就已经确定
            List temp = new ArrayList<>();
            for(int i = 0;i < size;i++){
                TreeNode node = queue.poll();
                temp.add(node.val);
                if(node.left != null) queue.offer(node.left);
                if(node.right != null) queue.offer(node.right);
            }
            res.add(temp);
        }
        return res;
    }
}

你可能感兴趣的:(数据结构,leetcode)