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).
from leetcode_py import TreeNodeclass Solution: # Time: O(n) # Space: O(n) def level_order_bottom(self, root: TreeNode[int] | None) -> list[list[int]]: levels: list[list[int]] = [] frontier = [root] if root is not None else [] while frontier: levels.append([node.val for node in frontier]) frontier = [ child for node in frontier for child in (node.left, node.right) if child is not None ] levels.reverse() return levels