因为不会用 Python 的队列,于是使用二维数组解决
class Solution:
def levelOrder(self , root: TreeNode) -> List[List[int]]:
nodeList = [[root]]
numList = []
level = 0
while 1:
nodeList.append([])
numList.append([])
for node in nodeList[level]:
numList[level].append(node.val)
if node.left:
nodeList[level + 1].append(node.left)
if node.right:
nodeList[level + 1].append(node.right)
level += 1
if nodeList[level] == []:
break
return numList
后面思考了一下,层序遍历的时候可以不用二维数组
但最重要的还是要学会使用 Python 队列
在参考了官解之后代码如下:
import queue
class Solution:
def levelOrder(self , root: TreeNode) -> List[List[int]]:
numList = []
q = queue.Queue()
q.put(root)
while not q.empty():
row = []
for _ in range(q.qsize()): # q.qsize() 即上一层节点数
cur = q.get()
row.append(cur.val)
if cur.left:
q.put(cur.left)
if cur.right:
q.put(cur.right)
numList.append(row)
return numList