Problem: 102. 二叉树的层序遍历


文章目录

  • 思路
  • 解题方法
  • 复杂度
  • Code


思路

层序遍历,广度优先搜索,只是不能用队列很烦。

解题方法

用列表模拟了队列。

复杂度

时间复杂度:

添加时间复杂度, 示例: 二叉树的层序遍历_空间复杂度

空间复杂度:

添加空间复杂度, 示例: 二叉树的层序遍历_空间复杂度

Code

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        if not root:
            return []
        
        q = []
        q.append([root, 1])
        now, all = 0, 1

        ans = []
        note = []
        now_ceng = 1
        while now < all:
            node, ceng = q[now]
            if ceng == now_ceng:
                note.append(node.val)
            else:
                ans.append(note)
                note = [node.val]
                now_ceng = ceng
            
            if node.left:
                q.append([node.left, ceng + 1])
                all += 1
            if node.right:
                q.append([node.right, ceng + 1])
                all += 1
            now += 1
        if note:
            ans.append(note)
        return ans