仅以此纪录每日LeetCode所刷题目(今天的周赛打的巨差)。
题目描述:
示例:
思路:
第一次接触和树有关的题目,之前一直是比较排斥的,但是前几天学习了一下使用Python来写树,因此最近做几道关于树的算法题。
我的思路是使用队列保存每一层的所有节点,把队列里的所有节点出队列,然后把这些出去节点各自的子节点入队列。以此来完成对每层的遍历。
代码:
# 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: TreeNode) -> List[List[int]]:
if root == None:
return []
res = []
queue = [root]
print(queue)
while queue:
res.append([node.val for node in queue])# 存储当前层的孩子节点列表
childNodes = []
for node in queue:
if node.left: # 若节点存在左孩子,入队
childNodes.append(node.left)
if node.right: # 若节点存在右孩子,入队
childNodes.append(node.right)
queue = childNodes # 更新队列为下一层的节点,继续遍历
return res