二叉树的层序遍历-使用双端队列Deque


目录

解题直达



原链接

https://leetcode.cn/problems/binary-tree-level-order-traversal/?envType=study-plan-v2&envId=top-100-likedhttps://leetcode.cn/problems/binary-tree-level-order-traversal/?envType=study-plan-v2&envId=top-100-liked

原题目

解题

node结构

复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */

题解-使用双端队列 Deque

复制代码
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        // 定义返回结果
        List<List<Integer>> ans = new ArrayList<>();
        
        // 入参判空
        if (root == null) {
            return ans;
        }
        // 使用双端队列
        Deque<TreeNode> queue = new LinkedList<>();
        queue.offer(root); // 先放跟节点

        // 队列不为空,一直循环到底
        while (!queue.isEmpty()) {

            // 保留当前层序遍历的 结果
            List<Integer> level = new ArrayList<>();

            // 当前层有几个节点,就遍历几次
            int size = queue.size();
            for (int i = 0; i < size; i++) {

                // 弹出当前层的一个节点,加入到结果集
                TreeNode node = queue.pop();
                level.add(node.val);

                // 当前层已处理完成,看看下一层是否存在,加到队列中,下次遍历
                if (node.left != null) {
                    queue.offer(node.left);
                }
                if (node.right != null) {
                    queue.offer(node.right);
                }
            }
            // 当前层遍历结束,保存结果
            ans.add(level);
        }

        // 最终返回
        return ans;
    }
}
相关推荐
Initialize-le1 小时前
Docker 容器网络不通?五步排查法
1024程序员节
天马37981 小时前
微信小程序swiper实现滚动渐变效果案例1
1024程序员节·微信小程序swiper·实现滚动渐变效果案例
知识分享小能手1 小时前
C学习教程,从入门到精通,C语言学生信息管理系统 — 知识点详解(18)
c语言·学习·1024程序员节
ha_lydms1 小时前
AnalyticDB MySQL 技术架构
大数据·hadoop·mysql·adb·spark·dataworks·1024程序员节
zh路西法1 小时前
【四足强化学习经典算法】(一):RMA——盲视运动控制与快速适应模块
pytorch·强化学习·1024程序员节·四足机器人·dagger·pyhon·rma
太理摆烂哥1 小时前
MySQL索引
1024程序员节
爱读书的小胖1 小时前
LeetCode 55 跳跃游戏 C 语言解题分析
c语言·数据结构·算法·leetcode·1024程序员节
CCblandy1 小时前
前缀缓存命中率不靠引擎靠排列:本机仿真 3 轮,易变字段放开头 98.0%→0.0%
人工智能·python·算法·自然语言处理·性能优化
Sakura_j_h_1 小时前
Three.js 单文件离线机械臂工作台:爆炸图、透明外壳与剖面
前端·机械臂·webgl·three.js·1024程序员节·esbuild