给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7]
3 / \ 9 20 / \ 15 7
返回其层序遍历结果:
[ [3], [9,20], [15,7] ]
按照深度优先的处理顺序,会先访问节点 3,再访问节点 9。
之后是第二列的 20,最后是第三列的 15,7。
每次递归的时候都需要带一个 index
(表示当前的层数),如果当前行对应的 list 不存在,就加入一个空 list 进去。
def levelOrder(root): if not root: return [] res = [] def dfs(index,r): if len(res)<index: res.append([]) res[index-1].append(r.val) if r.left: dfs(index+1,r.left) if r.right: dfs(index+1,r.right) dfs(1,root) return res class Node: def __init__(self, data=None): self.val = data # 节点值指针 self.right = None # 右节点指针 self.left = None # 左节点指针 if __name__=='__main__': tree = Node(3) tree.left = Node(9) tree.right = Node(20) tree.right.left = Node(15) tree.right.right=Node(7) y=levelOrder(tree) print(y)