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 提交结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值