二叉树的层序遍历
给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。
3
/ \
9 20
/ \
15 7
返回:
[
[3],
[9,20],
[15,7]
]
今天又是抄代码的一天呢~。
递归真的是一看就会,一写就废,而且很多时候重复计算很多,我想试试看迭代了。
这道题中递归算法的本质就是判断len(res)==depth,如果成立,就新增加一个子列表,这样来完成层级的区分。然后再分别加入每层的值:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
res = []
def helper(root,depth):
if not root:
return 0
if len(res)==depth:
res.append([])
res[depth].append(root.val)
helper(root.left,depth+1)
helper(root.right,depth+1)
helper(root,0)
return res
使用迭代法,这种方法其实也不太好想,核心在于建立每层的节点保存列表cur_level,并在函数中利用这一列表节点创建下一层的列表nex