【算法训练】剑指offer#32 - II 从上到下打印二叉树 II
一、描述
剑指 Offer 32 - II. 从上到下打印二叉树 II
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
示例 :
3
/ \
9 20
/ \
15 7
返回:
[
[3],
[9,20],
[15,7]
]
二、思路
- 跟剑指 Offer 32 - I. 从上到下打印二叉树一样,用队列的思想,只是存储的时候略有不同罢了
- 。。想简单了,需要判断出哪几个节点在同一行
- 高级哦,看了题解,用len(queue)判断,太巧妙了
三、解题
class Solution:
def levelOrder(self, root: TreeNode) -> List[int]:
if not root:
return []
res, queue = [], []
queue.append(root)
while queue:
temp = []
for _ in range(len(queue)):
node = queue.pop(0)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
temp.append(node.val)
res.append(temp)
return res