📅  最后修改于: 2023-12-03 15:36:26.733000             🧑  作者: Mango
本文将介绍如何使用 BFS(广度优先搜索)算法来计算二叉树每个节点到根节点的距离。
BFS 是一种图遍历算法,它从起始节点开始,逐层遍历,直到找到目标节点为止。在二叉树中,BFS 从根节点开始,先遍历根节点的左右子节点,之后逐层遍历树的下一层节点。BFS 可以用来搜索最短路径,也可以用来遍历图或树。
以下是使用 BFS 计算二叉树每个节点到根节点的距离的步骤:
以下是使用 Python 实现上述算法的代码:
from collections import deque
def node_distances(root):
distances = {}
queue = deque([(root, 0)]) # 将根节点入队,距离为 0
while queue:
node, dist = queue.popleft() # 弹出队列中的第一个节点和距离
distances[node] = dist # 将节点的距离保存到字典中
if node.left:
queue.append((node.left, dist + 1)) # 将左子节点入队,距离为当前节点距离加一
if node.right:
queue.append((node.right, dist + 1)) # 将右子节点入队,距离为当前节点距离加一
return distances # 返回每个节点到根节点的距离字典
BFS 算法可以很方便地计算二叉树每个节点到根节点的距离。使用 BFS 算法的关键是创建一个队列来存储待遍历的节点,以及使用字典来保存节点到根节点的距离。