当前位置: 首页 > news >正文

leetcode:特定深度节点链表(层次遍历)

题目描述

给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。
在这里插入图片描述

代码实现

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode[] listOfDepth(TreeNode tree) {
        LinkedList<TreeNode> queue = new LinkedList<>();//队列
        ArrayList<ListNode> res = new ArrayList<ListNode>();
        queue.offer(tree);
        ListNode dummy = new ListNode(0);//构造虚拟头节点
        while(!queue.isEmpty()) {//队列不为空就循环操作
            int size = queue.size();
            ListNode cur = dummy;//用来遍历
            for(int i = 0; i < size; i++) {//遍历队列,依次拿出队列里的想同层的元素
                TreeNode treeNode = queue.poll();
                cur.next = new ListNode(treeNode.val);
                if(treeNode.left != null) {
                    queue.offer(treeNode.left);
                }
                if(treeNode.right != null) {
                    queue.offer(treeNode.right);
                }
                cur = cur.next;
            }
            res.add(dummy.next);
            dummy.next = null;//一层元素添加完之后,重置虚拟头节点的指向
        }
        return res.toArray(new ListNode[res.size()]);//列表转为数组
    }
}

相关文章:

  • 让docbook支持表格行颜色的渲染
  • 蓝桥杯常用知识点总结
  • Element-ui Radio单选框中label绑定数据类型问题
  • Vue 子组件修改父组件值的解决方法
  • ubuntu 安装笔记
  • 百度富文本编辑器ueditor支持上传mp3格式等音频文件的方法
  • 前端性能优化之vue-cli3 开启gizp压缩及nginx配置
  • 关于php操作http header
  • 力扣 反转链表II
  • 本周技术关注:Awstats、Mrtg、Webalizer How-TO Articles
  • 力扣打卡:有效的字母异同位
  • Hibernate 3.2 SQL函数返回类型从Integer变为Long
  • 浅谈vue中index.html、main.js、App.vue、index.js之前的关系以及加载过程
  • 忠厚开发者与“厚道”甲方II(超级Demo)——CSDN外包实践(38)
  • eladmin前端 学习笔记
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Android交互
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Material Design
  • Mocha测试初探
  • Netty 4.1 源代码学习:线程模型
  • Objective-C 中关联引用的概念
  • 安卓应用性能调试和优化经验分享
  • 分布式熔断降级平台aegis
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 使用 @font-face
  • 手机端车牌号码键盘的vue组件
  • 说说动画卡顿的解决方案
  • 微服务入门【系列视频课程】
  • 原生 js 实现移动端 Touch 滑动反弹
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 2017年360最后一道编程题
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (pojstep1.3.1)1017(构造法模拟)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (七)c52学习之旅-中断
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转载)Google Chrome调试JS
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布