zoukankan      html  css  js  c++  java
  • 【leetcode】102:二叉树的层序遍历

    这个题目比较基础,可以对树的广度优先搜索的模版稍作更改,就可以得到我们的答案了。题目如下:

     解答如下:

    # 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: TreeNode) -> List[List[int]]:
            if not root: return []
            #跟结点入queue
            queue = [root]
            res = []
            while queue:
                res.append([node.val for node in queue])
                #存储当前层的孩子节点列表
                ll = []
                #对当前层的每个节点遍历
                for node in queue:
                    #如果左子节点存在,入队列
                    if node.left:
                        ll.append(node.left)
                    #如果右子节点存在,入队列
                    if node.right:
                        ll.append(node.right)
                #后把queue更新成下一层的结点,继续遍历下一层
                queue = ll
            return res

    方法二:

    class Solution:
        def levelOrder(self, root: TreeNode) -> List[List[int]]:
            if not root: return []
            res = []
            queue = [root]
            while queue:
                tmp = []
                for _ in range(len(queue)):
                    node = queue.pop(0)
                    tmp.append(node.val)
                    if node.left:
                        queue.append(node.left)
                    if node.right:
                        queue.append(node.right)
                res.append(tmp)
            return res

    对二叉树层序遍历的模版如下:

    def BFS(root):
        if root:
            res = []
            queue = [root]
            while queue:
                currentNode = queue.pop(0)
                res.append(currentNode.val)
                if currentNode.left:
                    queue.append(currentNode.left)
                if currentNode.right:
                    queue.append(currentNode.right)
        return res
  • 相关阅读:
    基于redis的分布式锁实现方案
    nginx 配置文件详解
    Linux 下安装Nginx
    Nginx简介
    Spring Boot 整合 Spring Security 示例实现前后分离权限注解 + JWT 登录认证
    idea2020.1版本下载安装与激活
    Cloud Alibaba --Nacos
    spring Cloud Alibaba 简介
    Eclipse中SVN更改连接用户
    Win7(64bit)搭建SVN
  • 原文地址:https://www.cnblogs.com/geeksongs/p/15395054.html
Copyright © 2011-2022 走看看