算法-广度优先搜索(BFS)

1. BFS和DFS图解

 

2. 算法定义:

通常BFS会和Queue(先进先出)一同使用。步骤如下:

  1. 将根节点加入到Queue中;
  2. 使用while循环,当Queue为空时,结束循环。
  3. 从Queue中poll出队尾节点,访问此节点。如果该节点有子节点,将子节点依次加入Queue中
  4. 重复2、3直到循环结束

3.代码示例

import queue

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param root TreeNode类
# @return int整型二维数组
#
class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        q = queue.Queue()
        q.put(root)
        while q:
            temp_node = q.get()
            print(temp_node.val)
            if temp_node.left:
                q.put(temp_node.left)
            if temp_node.right:
                q.put(temp_node.right)

 

posted @ 2022-05-18 13:37  foreast  阅读(49)  评论(0编辑  收藏  举报