freeCodeCamp/guide/chinese/certifications/coding-interview-prep/data-structures/breadth-first-search/index.md

1.2 KiB

title localeTitle
Breadth-First Search 广度优先搜索

广度优先搜索

让我们首先定义用于实现广度优先搜索算法的Tree类。

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

广度优先搜索算法从树的根开始从一个级别移动到另一个级别。我们将为此使用queue

def bfs(root_node): 
  queue = [root_node] 
 
  while queue: 
    top_element = queue.pop() 
    print("Node processed: ",top_element) 
 
    if top_element.left: 
      queue.append(top_element.left) 
 
    if top_element.right: 
      queue.append(top_element.right) 

我们可以轻松修改上面的代码来打印每个节点的级别。

def bfs(root_node): 
  queue = [(root_node, 0)] 
 
  while queue: 
    top_element, level = queue.pop() 
    print("Node processed: {} at level {}".format(top_element, level)) 
 
    if top_element.left: 
      queue.append((top_element.left, level + 1)) 
 
    if top_element.right: 
      queue.append((top_element.right, level + 1)) 

|复杂性|时间|空间| | ----- | ------ | ------ | | BFS | n | n |