problem
Given the root of a binary tree, return the bottom-up level order traversal of its nodes’ values. (i.e., from left to right, level by level from leaf to root).
Algorithm
bfs. Use bfs travel on the tree, which follows the depth order. Then save each depth of the tree and reverse the list with the depth.
Code
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
Q = []
def dfs(root, d):
if not root:
return
if len(Q) <= d:
Q.append([root.val])
else:
Q[d].append(root.val)
dfs(root.left, d+1)
dfs(root.right, d+1)
dfs(root, 0)
Q.reverse()
return Q