class Solution:
def levelOrderBottom(self, root: Optional[TreeNode]) -> List[List[int]]:
results = []
if not root: return []
from collections import deque
queue = deque([root])
while queue:
result = []
child_size = len(queue)
for _ in range(child_size):
cur = queue.popleft()
result.append(cur.val)
if cur.left: queue.append(cur.left)
if cur.right: queue.append(cur.right)
results.append(result)
return results[::-1]
迭代思路:
同 CSDN
只需将resutlts数组颠倒顺序即可。
数组颠倒教程:string - What does n[::-1] means in Python? - Stack Overflow
class Solution:
def levelOrderBottom(self, root: Optional[TreeNode]) -> List[List[int]]:
result = []
def traversal(root: TreeNode, depth=0):
if not root: return []
if len(result) == depth: result.append([])
result[depth].append(root.val)
if root.left: traversal(root.left, depth + 1)
if root.right: traversal(root.right, depth + 1)
traversal(root,0)
return result[::-1]
递归思路:
同 CSDN
只需将resutlts数组颠倒顺序即可。