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

51 lines
1.2 KiB
Markdown
Raw Normal View History

---
title: Breadth-First Search
localeTitle: 广度优先搜索
---
## 广度优先搜索
让我们首先定义用于实现广度优先搜索算法的`Tree`类。
```python
class Tree:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
```
广度优先搜索算法从树的根开始从一个级别移动到另一个级别。我们将为此使用`queue` 。
```python
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)
```
我们可以轻松修改上面的代码来打印每个节点的级别。
```python
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 |