📅  最后修改于: 2023-12-03 15:36:35.249000             🧑  作者: Mango
在二叉树中,每个节点到根节点的距离可以使用广度优先搜索(BFS)算法来求解。BFS算法可以遍历整个二叉树,并且可以记录每个节点到根节点的距离。
BFS算法是一种广度优先的搜索算法,可以遍历整个二叉树。BFS算法从根节点开始,首先将根节点入队列,然后从队列中取出一个节点,并将其所有未标记的子节点入队列。重复此过程,直到队列为空。
BFS算法可以记录每个节点到根节点的距离。我们可以定义一个数组dist,dist[i]表示节点i到根节点的距离。BFS算法会先将根节点入队列,并将dist[root]设为0。然后从队列中取出一个节点i,并遍历其所有未标记的子节点j。如果节点j未被标记,将节点j入队列,并将dist[j]设为dist[i]+1。
下面是使用Python实现BFS算法求解每个节点到根节点的距离的代码。
from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def bfs(root):
dist = [-1 for i in range(1005)]
q = deque()
q.append(root)
dist[root.val] = 0
while len(q) > 0:
u = q.popleft()
if u.left is not None and dist[u.left.val] == -1:
q.append(u.left)
dist[u.left.val] = dist[u.val]+1
if u.right is not None and dist[u.right.val] == -1:
q.append(u.right)
dist[u.right.val] = dist[u.val]+1
return dist
注:上述代码中TreeNode是一个定义二叉树节点的类。bfs函数用于求解二叉树每个节点到根节点的距离。
使用BFS算法可以求解二叉树每个节点到根节点的距离。BFS算法需要将每个节点到根节点的距离记录下来,可以使用一个距离数组dist。遍历每个节点时,如果其子节点未被标记,将其入队列,并更新距离数组。