zoukankan      html  css  js  c++  java
  • leetcode--102:(二叉树)Binary Tree Level Order Traversal

    # 2019.7.12:

    我的思路:

      这题以前做过,做一个回忆。一个很棒的解法就是使用队列,如果有root,root入队,出队第一个值,把这个root的左右节点(如果有)入队,直到队列为空,出来的就是广度遍历的结果。

    from pythonds import Queue
    
    class TreeNode:
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
    
    class Solution:
        def levelOrder(self, root: TreeNode) -> List[List[int]]:
            q = Queue()
            q.enqueue(root)
            alist = []
            while q.size() > 0 :
                node = q.dequeue()
                alist.append(node)
                if node.left:
                    q.enqueue(node.left)
                if node.right:
                    q.enqueue(node.right)
         return alist

    我的答案:

      可是leetcode这题无法引入外置库,而且返回的是list[list[int]] ,所以我们设一个列表为cur用于记录当前层,另一个列表next用于记录下一层,每层迭代一直往下。

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def levelOrder(self, root: TreeNode) -> List[List[int]]:
            res = []
            if root:
                cur = [root]
                while cur:
                    res.append([i.val for i in cur])
                    next = []
                    for i in cur:
                        if i.left:
                            next.append(i.left)
                        if i.right:
                            next.append(i.right)
                    cur = next
            return res

     

  • 相关阅读:
    数据库02
    MySQL1
    GIL 死锁 递归锁 event 信号量 线程Queue
    小脚本 暴力删除文件 刷屏
    常见web攻击 及基础 回顾(杂记)
    接口中的简单异步 async
    python协程 示例
    python 利用jinja2模板生成html
    python 调用webservices 接口
    python 进程 进程池 进程间通信
  • 原文地址:https://www.cnblogs.com/marvintang1001/p/11174955.html
Copyright © 2011-2022 走看看