因为不会用 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