一.题目描述:
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
二.输出示例:
示例:
二叉树:[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)