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,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its bottom-up level order traversal as:
[ [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>> arr = new ArrayList(); int level = 0; showTree(root,arr,0); List<List<Integer>> arr1 = new ArrayList(); for(int i = 0;i < arr.size();i++){ arr1.add(arr.get(arr.size()-1-i)); } return arr1; } public void showTree(TreeNode root, List<List<Integer>> arr,int level){ if(root == null){ return; } if(arr.size()-1 < level) { arr.add(new ArrayList()); } arr.get(level).add(root.val); showTree(root.left,arr,level+1); showTree(root.right,arr,level+1); } }