102. 二叉树的层序遍历

  1. 题目链接

  2. 解题思路:层序遍历就用队列,唯一需要注意的就是,要每一层单独收集,所以要用一个变量,记录每一层需要收集的数目,同时还要记录下一层需要收集的数目

  3. 代码

    class Solution:
        def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
            if root == None:
                return []
            queue = deque()
            ans = []
            queue.append(root)
            cur_count = 1    # 本层还需要收集多少个
            next_count = 0   # 下一层需要收集多少个
            tmp = []
            while queue:
                cur = queue.popleft()
                tmp.append(cur.val)
                if cur.left:
                    queue.append(cur.left)
                    next_count += 1
                if cur.right:
                    queue.append(cur.right)
                    next_count += 1
                cur_count -= 1
                if cur_count == 0:
                    ans.append(copy.copy(tmp))
                    tmp.clear()
                    cur_count = next_count
                    next_count = 0
            return ans
    
posted @ 2024-12-25 16:43  ouyangxx  阅读(17)  评论(0)    收藏  举报