题目
102. 二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1]
输出:[[1]]
示例 3:
输入:root = []
输出:[]
提示:
- 树中节点数目在范围 [0, 2000] 内
- -1000 <= Node.val <= 1000
我的代码(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: Optional[TreeNode]) -> List[List[int]]:
result = []
if not root:
return result
currLvl = [root]
nextLvl = []
while len(currLvl) != 0:
currResult = []
for node in currLvl:
currResult.append(node.val)
nextLvl.append(node.left) if node.left else None
nextLvl.append(node.right) if node.right else None
currLvl = nextLvl
nextLvl = []
result.append(currResult)
return result
点评
难度不高,也没有什么特别的算法,差异就在于如何实现栈或者类似结构。
实际上用一个长数组或者list之类的结构把所有结点都存储起来是可行的,官方也差不多是这个思路。
我用了两个list缓存当前层和下一层,在当前层遍历之后把当前层指向下一层,少了些内存使用,但是多了一些创建和删除的开销,难说哪个更好。
baddif@gmail.com
AI简历优化站
AI求职跟踪器(建设中)
主站(建设中)
相关平台
Github Issues / Notion / Blog