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]]
这里要求层序遍历,而且结果是从下往上,不是从上往下。
思路:1.可以继续从上往下添加到list中,最后反过来放到另一个list中返回
2:使用list中的add(index,element)方法,该方法是往index位置插入元素,该位置上原来的元素以及后面所有元素往后移,这里只需往0处一直插入就行,就会自动往后移。因为插入会移动后面所有元素,所以此时适合linkedList。
代码1:
class Solution { public List
> levelOrderBottom(TreeNode root) { List
> tem=new ArrayList
>(); if(root==null) return tem; Queue q=new LinkedList<>(); List list=new ArrayList<>(); q.add(root); while(!q.isEmpty()){ int size=q.size(); for(int i=0;i > result=new ArrayList
>(); for(int i=tem.size()-1;i>=0;i--) result.add(tem.get(i)); return result; }}
代码2:
public List
> levelOrderBottom(TreeNode root) { List
> tem=new LinkedList
>(); if(root==null) return tem; Queue q=new LinkedList<>(); List list=new ArrayList<>(); q.add(root); while(!q.isEmpty()){ int size=q.size(); for(int i=0;i