107. 二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
这两天真的是周末吗,力扣的每日一题居然是简单。
这道题就是一个BFS,最佳时间复杂度是N,如果想优化的话,python可以用一下deque,在插入和删除的时候提升速度(如果树比较大的话),不过实测速度提升不多
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
ans = []
bfs = collections.deque([root])
if not root:
return ans
while(bfs):
stand = []
for _ in range(len(bfs)):
node = bfs.popleft()
stand.append(node.val)
if node.left:
bfs.append(node.left)
if node.right:
bfs.append(node.right)
ans.insert(0,stand)
return ans