树的练习(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

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-12
  • 2021-11-24
  • 2021-06-28
  • 2021-08-10
  • 2022-01-12
  • 2021-05-14
猜你喜欢
  • 2021-05-24
  • 2021-09-13
  • 2021-11-10
  • 2021-09-06
  • 2022-12-23
  • 2021-10-10
相关资源
相似解决方案