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

力扣——二叉树的层次遍历

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

例如:
给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其自底向上的层次遍历为:

[
  [15,7],
  [9,20],
  [3]
]

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
        public List<List<Integer>> levelOrderBottom(TreeNode root) {
            List<List<Integer>> lists = new ArrayList<>();
            func(lists, 0, root);
            for (int i = 0, j = lists.size() - 1; i < j; i++, j--) {
                List<Integer> temp = lists.get(i);
                lists.set(i, lists.get(j));
                lists.set(j, temp);
            }
            return lists;
        }

        private void func(List<List<Integer>> lists, int level, TreeNode root) {
            if (root == null) {
                return;
            }
            if (lists.size() == level) {
                List<Integer> list = new ArrayList<>();
                list.add(root.val);
                lists.add(list);
            } else {
                lists.get(level).add(root.val);
            }
            func(lists, level + 1, root.left);
            func(lists, level + 1, root.right);
        }
    }

 

转载于:https://www.cnblogs.com/JAYPARK/p/10673155.html

相关文章:

  • vue工程 使用滚动组件 vue2-better-scroll 实现上拉加载 下拉刷新
  • Python多线程实例
  • loadrunner中web_reg_save_param和web_reg_save_param_ex的区别
  • 理解JavaScript【转】
  • python入门 第一节
  • 1255: 打怪升级(Java)
  • 随笔2
  • JavaSE--日志
  • 大二下周总结(7)
  • 前段支持
  • 二:Nexus知识
  • python-for显示奇偶数
  • 力扣——用栈实现队列
  • 02 Anaconda的介绍,安装记以及使用
  • java集合之间的关系
  • 11111111
  • Asm.js的简单介绍
  • Effective Java 笔记(一)
  • js对象的深浅拷贝
  • js正则,这点儿就够用了
  • js中forEach回调同异步问题
  • Less 日常用法
  • 关于Java中分层中遇到的一些问题
  • 近期前端发展计划
  • 深度学习入门:10门免费线上课程推荐
  • 终端用户监控:真实用户监控还是模拟监控?
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​虚拟化系列介绍(十)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $.ajax,axios,fetch三种ajax请求的区别
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (4)Elastix图像配准:3D图像
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C语言)fread与fwrite详解
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (转)Google的Objective-C编码规范
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .md即markdown文件的基本常用编写语法
  • .NET 指南:抽象化实现的基类
  • .NET程序员迈向卓越的必由之路
  • .NET开发者必备的11款免费工具
  • ::before和::after 常见的用法
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [20150707]外部表与rowid.txt
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [2023-年度总结]凡是过往,皆为序章
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [c]扫雷
  • [c++] 自写 MyString 类
  • [C语言]——柔性数组
  • [DP 训练] Longest Run on a Snowboard, UVa 10285
  • [HCTF 2018]WarmUp (代码审计)