LeetCode 热题100-41 二叉树的层序遍历

 二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

示例 1:

LeetCode 热题100-41 二叉树的层序遍历_第1张图片

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

提示:

  • 树中节点数目在范围 [0, 2000] 内
  • -1000 <= Node.val <= 1000

这道题目是层序遍历,应该不难想就是要用队列,将root压入(不空),如果有左孩子压入左孩子,有右孩子压入右孩子,一开始错的原因是不知道怎么样才能分层放到一个列表中,后来看了看k神的题解,发现其实就是在每一层操作的时候记录一下当前队列的长度就好了,然后写个循环放到一个小列表中。

# 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]]:
        res = []
        stack = []
        if root != None :
            stack.append(root)
            tmp_time = 1
        while len(stack)!=0:
            tmp = []
            while tmp_time>0:
                top = stack[0]
                tmp.append(top.val)
                tmp_time -= 1
                if top.left!=None:stack.append(top.left)
                if top.right!=None:stack.append(top.right)
                stack.pop(0)
            res.append(tmp)
            tmp_time = len(stack)
        return res

LeetCode 热题100-41 二叉树的层序遍历_第2张图片

你可能感兴趣的:(力扣热题100,leetcode,算法,python)