题目:
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / 9 20 / 15 7
return its bottom-up level order traversal as:
[ [15,7], [9,20], [3] ]
题解:
这道题跟前面一道是一样的。。
只是存到res的结果顺序不一样罢了。
之前那个就是循序的存
这道题就是每得到一个行结果就存在res的0位置,这样自然就倒序了。
代码如下:
public class Solution { public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> res = new LinkedList<List<Integer>>(); Queue<TreeNode> queue = new LinkedList<TreeNode>(); if(root==null) return res; queue.add(root); while(!queue.isEmpty()) { int levelnum = queue.size(); //这层有几个TreeNode List<Integer> sublist = new LinkedList<Integer>(); for(int i=0; i<levelnum;i++) { TreeNode node = queue.poll(); if(node.left!=null) queue.add(node.left); if(node.right!=null) queue.add(node.right); sublist.add(node.val); } res.add(0,sublist); } return res; } }
与I唯一的不同就是这个res.add(0,sublist)的地方。