您当前的位置: 首页 >  Python

Better Bench

暂无认证

  • 5浏览

    0关注

    695博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Leetcode刷题Python】102. 二叉树的层序遍历

Better Bench 发布时间:2022-08-06 20:16:22 ,浏览量:5

1 题目

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

示例 1:

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

示例 2:

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

示例 3:

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

2 解析

(1)方法一:广度优先搜索,递归遍历,用一个二元组 (node, level) 来表示状态,它表示某个节点和它所在的层数,每个新进队列的节点的 level 值都是父亲节点的 level 值加一。最后根据每个点的 level 对点进行分类

(2)方法二:双端队列,双端队列是一个可以在队列任意一端插入元素的队列。在广度优先搜索遍历当前层节点拓展下一层节点的时候我们从左往右按顺序拓展。

3 Python实现

(1)方法一

def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
   
    if  not root:
       return []
    def dfs(node,level):
        if len(queue_tree) List[List[int]]:
    q = deque([root])
    res = []
    while q and q[0]:
        n = len(q)
        tmp = []
        for _ in range(n):
            node = q.popleft()
            tmp.append(node.val)
            if node.left:
                q.append(node.left)
            if node.right:
                q.append(node.right)
        res.append(tmp)
    return res
            
关注
打赏
1665674626
查看更多评论
立即登录/注册

微信扫码登录

0.0770s