题目描述:
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
示例:
题解:卡点是如何去分辨当前节点在哪一层,利用for循环,因为在while循环的每一次中,当前queue的长度总是当前层的长度,所以用for循环把结果加入进临时列表就行,这样每次临时列表存的元素刚好就是每一层的所有节点。
# 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]]:
#如何去分辨当前节点在哪一层,加入一个for循环
from collections import deque
queue = deque()
queue.append(root)
if not root:
return []
tmp = []
result = []
while queue:
for i in range(len(queue)):
node = queue.popleft()
tmp.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
result.append(tmp)
tmp = []
return result