LeetCode55|二叉树的层次遍历II

孤人 提交于 2020-12-01 02:00:53

1,问题简述

 

给定一个二叉树,返回其节点值自底向上的层次遍历。

(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)


2,示例

例如:给定二叉树 [3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:
[ [15,7], [9,20], [3]]

3,题解思路

队列的使用


4,题解程序

 import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;
public class LevelOrderBottomTest { public static void main(String[] args) { TreeNode t1 = new TreeNode(3); TreeNode t2 = new TreeNode(9); TreeNode t3 = new TreeNode(20); TreeNode t4 = new TreeNode(15); TreeNode t5 = new TreeNode(7); t1.left = t2; t1.right = t3; t3.left = t4; t3.right = t5; List<List<Integer>> listList = levelOrderBottom(t1); System.out.println("listList = " + listList); }
public static List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> listList = new ArrayList<>(); if (root == null) { return listList; } Queue<TreeNode> queue = new LinkedList<>(); queue.add(root); while (!queue.isEmpty()) { int size = queue.size(); List<Integer> list = new ArrayList<>(); for (int i = 0; i < size; i++) { TreeNode node = queue.poll(); list.add(node.val); if (node.left != null) { queue.add(node.left); } if (node.right != null) { queue.add(node.right); } } listList.add(list); } List<List<Integer>> newArrayList = new ArrayList<>(listList.size()); for (int i = listList.size() - 1; i >= 0; i--) { newArrayList.add(listList.get(i)); } return newArrayList; }}

5,题解程序图片版

6,总结

写了一年的文章了,整体输出文章内容基本上都是以java为主,大概篇幅内容都是围绕着数据库,JDK源码,mybatis,spring,springboot的框架来进行输出的,一年有所成长,有所失去,快到十一了,去年也是十一的时候开始了文章输出的,一年的时间过得好快啊

本文分享自微信公众号 - WwpwW(gh_245290c1861a)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!