给定具有根节点和特定节点的二叉树(不一定是二叉搜索树),如何找到离给定节点最近的叶节点?
对于这个问题,是否有任何特定算法或现有算法的修改?
答案 0 :(得分:2)
这是一个非常典型的图遍历问题。您可以使用Dijkstra's Algorithm遍历图表并找到到达目的地的最短路径。
在这种情况下我们使用Dijkstra而不是A *因为我们不知道我们的目的地是什么。如果您玩过星际争霸,那么(几乎可以肯定)这是他们用来找工人找到最近的矿物供应或最近需要修理的车辆。
答案 1 :(得分:2)
检查link。 我们的想法是预先遍历给定的树并跟踪数组中的祖先。当我们到达给定键时,我们评估以给定键为根的子树中最近叶子的距离。我们还逐个遍历所有祖先,并找到以祖先为根的子树中最近叶子的距离。我们比较所有距离并返回最小值。
答案 2 :(得分:0)
如果节点维持与其父节点的反向链接的假设为真,则执行BFS就足够了。这个想法首先是到达感兴趣的节点,然后对其子节点及其父链接进行BFS(然后每个父链接将对其子节点进行BFS,排除您已经访问过的节点及其父节点)。您保持从感兴趣的节点到叶子的最小距离(MinDistance),并且不在非叶子节点上进行进一步的BFS遍历,距离> = MinDistance