1 题目 
思路
用两个队列存储每层的节点
代码
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def levelOrder(self, root):
"""
:type root: Optional[TreeNode]
:rtype: List[List[int]]
"""
node_list = [root] #存储上一层
node_list_i = [] #存储下一层节点
ans = []
ans_i = []
while root is not None:
if node_list:#遍历当前层
root = node_list.pop(0)
ans_i.append(root.val)#记录节点值
elif node_list_i:#遍历下一层
node_list = node_list_i
node_list_i = []
ans.append(ans_i)
ans_i = []
root = node_list.pop(0)
ans_i.append(root.val)
else:
ans.append(ans_i)#最后一层的节点值
break
if root.left is not None:#记录下一层的节点
node_list_i.append(root.left)
if root.right is not None:
node_list_i.append(root.right)
return ans
707

被折叠的 条评论
为什么被折叠?



