树的练习(5)

 Python 中使用 collections 中的双端队列 deque() ,其 popleft() 方法是删除最左边的数字,可达到 O(1)时间复杂度;列表 list 的 pop(0) 方法时间复杂度为 O(N) 。

# 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[int]:
        if not root:
            return []
        res, queue = [], collections.deque()
        queue.append(root)
        while queue:
            node = queue.popleft()
            res.append(node.val)
            if node.left: queue.append(node.left)
            if node.right: queue.append(node.right)
        return res

其实也可以使用简易的栈来实现,即是BFS

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

猜你喜欢

转载自www.cnblogs.com/topass123/p/12764500.html