您的位置:首页 > 编程语言 > Python开发

leetcode 107 Binary Tree Level Order Traversal II

2018-03-05 11:32 369 查看
Java:class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<TreeNode>();
List<List<Integer>> anslist = new LinkedList<List<Integer>>();

if (root == null) return anslist;

queue.offer(root); // .offer 添加一个元素并返回true,如果队列已满,则返回false

while (!queue.isEmpty()){
int len = queue.size();
List<Integer> partlist = new LinkedList<Integer>();
while (len>0){
if(queue.peek().left!=null) queue.offer(queue.peek().left);
if(queue.peek().right!=null) queue.offer(queue.peek().right);
partlist.add(queue.poll().val); //.poll 移除并返问队列头部的元素,如果队列为空,则返回null
len--;
}
anslist.add(0,partlist); //add(i,E) 方法将指定的元素E在此列表中的指定位置i
}
return anslist;
}
}Python:class Solution:
def levelOrderBottom(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
queue = collections.deque([(root, 0)])
res = []

while queue:
node, level = queue.popleft()
if node:
if len(res) < level+1:
res.insert(0, [])
res[-(level+1)].append(node.val)
queue.append((node.left, level+1))
queue.append((node.right, level+1))
return res
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode java python