前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发优快云,mcf171专栏。
博客链接:mcf171的博客
——————————————————————————————
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] ]这个题没啥好说的。。 Your runtime beats 23.12% of java submissions.
public class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> results = new ArrayList<List<Integer>>();
Queue<TreeNode> queue1 = new LinkedList<TreeNode>();
Queue<TreeNode> queue2 = new LinkedList<TreeNode>();
if(root != null) queue1.offer(root);
while(queue1.peek() != null || queue2.peek() != null){
if(queue1.peek() != null){
List<Integer> result = new ArrayList<Integer>();
while(queue1.peek()!=null){
TreeNode node = queue1.poll();
result.add(node.val);
if(node.left != null) queue2.offer(node.left);
if(node.right != null) queue2.offer(node.right);
}
results.add(0,result);
}
if(queue2.peek() != null){
List<Integer> result = new ArrayList<Integer>();
while(queue2.peek()!=null){
TreeNode node = queue2.poll();
result.add(node.val);
if(node.left != null) queue1.offer(node.left);
if(node.right != null) queue1.offer(node.right);
}
results.add(0,result);
}
}
return results;
}
}
本文介绍了LeetCode第107题的解决方案,即从下到上进行二叉树的层次遍历。博主分享了自己为实习面试准备刷题的经历,欢迎讨论交流。
1397

被折叠的 条评论
为什么被折叠?



