1. 题目:
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1]
输出:[[1]]
示例 3:
输入:root = []
输出:[]
2. 我的代码:
# 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 import queue class Solution: def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: # 定义队列 q = queue.Queue() result = [] # 放入根节点 q.put(root) # 记录队列大小 size = 0 # 每一层 while not q.empty(): # 统计本层结果 result_i = [] # 记录父节点个数 size = q.qsize() for i in range(size): parent = q.get() if parent: result_i.append(parent.val) q.put(parent.left) q.put(parent.right) if result_i: result.append(result_i) return result
利用队列实现二叉树的层序遍历(我这个实现的时间复杂度有点高,需要后续再去改善,不过大抵是实现了)
首先给队列放入根节点,记录每层的节点个数,然后对该层节点进行遍历,将遍历的节点的值放入结果中,并将其左右子树都再存入列表(当然顺便把遍历过的节点删去)。因为是要每一层都作为一个列表,所以,每一层都统计一遍该层的遍历结果。