Python中切片[::-1]和reverse函数的区别
先说结论:切片[::-1] 有返回值, reverse()函数没有返回值
有返回值的可以 return、赋值。没有的不能 return、赋值。
问题来源:力扣107 二叉树的层序遍历 II
题目链接二叉树的层序遍历 II
之前做了102. 二叉树的层序遍历,自底向上的层序遍历只需要反转一下result
102. 二叉树的层序遍历代码
# 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 levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
queue = collections.deque([root])
result = []
while queue:
level = []
for _ in range(len(queue)):
cur = queue.popleft()
level.append(cur.val)
if cur.left:
queue.append(cur.left)
if cur.right:
queue.append(cur.right)
result.append(level)
return result
107. 二叉树的层序遍历 II
# 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: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
queue = collections.deque([root])
result = []
while queue:
level = []
for _ in range(len(queue)):
cur = queue.popleft()
level.append(cur.val)
if cur.left:
queue.append(cur.left)
if cur.right:
queue.append(cur.right)
result.append(level)
return result[::-1] #这里应该用切片,用result.reverse()不行
return时应该用切片,用result.reverse()不行,原因就是切片[::-1] 有返回值, reverse()函数没有返回值