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

 

 

 

posted @ 2019-07-12 11:14  Marvin_Tang  阅读(191)  评论(0编辑  收藏  举报