1,问题简述
给定一个二叉树,返回其节点值自底向上的层次遍历。
(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
2,示例
例如:给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回其自底向上的层次遍历为:[[15,7],[],[]]
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源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/3934278/blog/4561698