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

     

  • 相关阅读:
    jsp第六周作业
    jsp第四次作业
    JSP第二次作业 2021 0310
    软件测试作业 NO.1
    北航软工优秀作业汇总
    Alpha阶段评审结果和意见反馈
    转会候选人名单
    人员转会流程
    关于团队项目阶段目标的说明
    2021年软工-热身阅读作业
  • 原文地址:https://www.cnblogs.com/marvintang1001/p/11174955.html
Copyright © 2011-2022 走看看