LeetCode102. 二叉树的层序遍历

1 题目描述

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
在这里插入图片描述

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:
输入:root = [1]
输出:[[1]]

示例 3:
输入:root = []
输出:[]

来源:力扣(LeetCode)
链接:102. 二叉树的层序遍历

2 算法思想

层序遍历一个二叉树,就是按照从左到右一层层的去遍历二叉树。由于队列有先进先出的特性,符合一层层遍历的逻辑,层序遍历的方式类似于图的BFS遍历。这里借助队列,采用BFS迭代的方式进行层序遍历。

3 代码实现

public class LevelOrder {
    public List<List<Integer>> resList = new ArrayList<List<Integer>>();
    public List<List<Integer>> levelOrder(TreeNode root) {
        function(root);
        return resList;
    }
  public void function(TreeNode node){
        if (node == null) return;
        //定义一个队列临时存储层序遍历过程中每一层遍历到的节点
        Queue<TreeNode> que = new LinkedList<>();
        //从根节点开始,入队
        que.offer(node);

        while (!que.isEmpty()){
            //定义一个list数组,存储每一层的节点
            ArrayList<Integer> itemList = new ArrayList<>();
            //当前队列的长度即每一层遍历到的节点个数
            int len = que.size();

            while (len > 0){
                TreeNode tempNode = que.poll();
                itemList.add(tempNode.val);
                //将下一层的节点加入队列,进行迭代
                if (tempNode.left != null) que.offer(tempNode.left);
                if (tempNode.right != null) que.offer(tempNode.right);
                len--;
            }
            resList.add(itemList);
        }
    }
  }

4 提交结果

在这里插入图片描述


版权声明:本文为weixin_43553142原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。