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
  • 相关阅读:
    KVM WEB管理工具——WebVirtMgr(二)日常配置
    在阿里云上遇见更好的Oracle(四)
    Django源码分析之权限系统_擒贼先擒王
    Django源码分析之server
    Django源码分析之执行入口
    HDFS常用文件操作
    排查实时tail功能cpu占用过高问题
    ZooKeeper完全分布式安装与配置
    Hadoop2.5.2集群部署(完全分布式)
    构造器
  • 原文地址:https://www.cnblogs.com/geeksongs/p/15395054.html
Copyright © 2011-2022 走看看