Problem:
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).
Explanation:
对树从下到上进行层序遍历。
My Thinking:
同正向层序遍历一样,只不过将每层结点放在上一层前面。
My Solution:
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
Queue<TreeNode> queue=new LinkedList<>();
List<List<Integer>> levellist=new LinkedList<>();
if(root==null)
return levellist;
queue.add(root);
while(!queue.isEmpty()){
int size=queue.size();
List<Integer> numlist=new ArrayList<>();
for(int i=0;i<size;i++){
root=queue.poll();
numlist.add(root.val);
if(root.left!=null)
queue.add(root.left);
if(root.right!=null)
queue.add(root.right);
}
levellist.add(0,numlist);
}
return levellist;
}
}
Optimum Thinking:
Optimum Solution: