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).node
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] ]
思路:
先用棧存下來,而後按層次打印便可app
class Solution(object): def levelOrderBottom(self, root): """ :type root: TreeNode :rtype: List[List[int]] """ if root == None: return [] stack = [] root.level = 0 queue = [root] while len(queue): root = queue.pop(0) if root: stack.append(root) if root.right: q = root.right q.level = root.level + 1 queue.append(q) if root.left: q = root.left q.level = root.level + 1 queue.append(q) result = [] temp = [] flag = None while(stack): root = stack.pop(-1) if flag == None or flag == root.level: temp.append(root.val) flag = root.level else: result.append(temp) temp = [root.val] flag = root.level if temp: result.append(temp) return result