1.5 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			1.5 KiB
		
	
	
	
	
	
	
	
title, localeTitle
| title | localeTitle | 
|---|---|
| Breadth-First Search | Поиск по ширине | 
Поиск по ширине
Давайте сначала определим класс Tree который будет использоваться для реализации алгоритма первого поиска Breadth.
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 |