题目描述
解法
队列法
定义一个队列来存储每一层的节点,当前节点遍历完之后重新给这个队列赋值下一层的所有节点。
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if root is None:
return []
res = []
queue = [root]
while len(queue) > 0:
temp_value = [] # 定义一个临时存储节点值的列表
temp_node = [] #定义一个临时存储节点的列表,为了下面存储方便
for ele in queue:
temp_value.append(ele.val)
if ele.left is not None:
temp_node.append(ele.left)
if ele.right is not None:
temp_node.append(ele.right)
queue = temp_node #重新给队列赋值下一层的所有节点
res.append(temp_value)
return res
递归法
自我感觉递归和迭代的思想一毛一样。。。就是把while换成了一个函数。。。
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if root is None:
return []
def bfs(node_list):
if len(node_list) == 0:
return None
temp_node = []
temp_value = []
for node in node_list:
temp_value.append(node.val)
if node.left is not None:
temp_node.append(node.left)
if node.right is not None:
temp_node.append(node.right)
self.res.append(temp_value)
bfs(temp_node)
self.res = []
bfs([root])
return self.res
思考感想
🤔🤔🤔