Try   HackMD

107. Binary Tree Level Order Traversal II

Question

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]
]

Solution: Python

from collections import deque # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def levelOrderBottom(self, root): """ :type root: TreeNode :rtype: List[List[int]] """ num_nodes = 1 num_nodes_next_level = 0 queue = deque() queue.append(root) result = deque() while queue: level = [] for i in range(num_nodes): node = queue.popleft() if node is not None: level.append(node.val) queue.append(node.left) queue.append(node.right) num_nodes_next_level += 2 num_nodes = num_nodes_next_level num_nodes_next_level = 0 if level: result.appendleft(level) return result

Solution: Java