leetcode102二叉树层数遍历
题目描述
- 二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回其层序遍历结果:
[
[3],
[9,20],
[15,7]
]
解题思路
二叉树层次遍历,通过记录每层有多少个节点,来进行分层
代码
# 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
from collections import deque
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
queue=deque()
if root is None:
return []
queue.append(root)
cur=1
result=[]
result.append([root.val])
while len(queue)!=0:
nex=0
log=[]
while cur!=0:
q=queue.popleft()
if q.left is not None:
queue.append(q.left)
nex+=1
log.append(q.left.val)
if q.right is not None:
queue.append(q.right)
log.append(q.right.val)
nex+=1
cur-=1
if len(log)!=0:
result.append(log)
cur=nex
return result