LeetCode 인터뷰 질문 (32) -. II 거꾸로 이진 승리에게 제공 [II] [쉬운 파이썬] [] [] [BFS] 바이너리를 인쇄
문제
같은 레이어 노드를 인쇄하려면 왼쪽에서 오른쪽으로, 위에서 아래로 층에서 이진 트리를 인쇄, 각 계층은 한 줄에 출력한다.
예를 들어 :
이진 트리를 감안할 때 : [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
결과를 통해 그 수준으로 돌아 가기 :
[
[3],
[9,20],
[15,7]
]
팁 :
节点总数 <= 1000
참고 : 역 주요 문제 102 문제 같은
사고
BFS
当队列不为空:
当前层打印循环:
队首元素出队,记为 node
将 node.val 添加到 temp 尾部
若左(右)子节点不为空,则将左(右)子节点加入队列
把当前 temp 中的所有元素加入 res
시간 복잡도 : 이진 트리의 노드의 O (N-), N-수.
우주의 복잡성 : 이진 트리의 노드의 O (N-), N-수.
Python3 코드
# 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]]:
import collections
if not root:
return []
res, q = [], collections.deque()
q.append(root)
while q:
# 输出是二维数组
temp = []
for x in range(len(q)):
node = q.popleft()
temp.append(node.val)
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
res.append(temp)
return res