从二叉树中的给定节点中查找最近的叶节点

时间:2013-06-18 18:52:39

标签: tree binary-tree

给定具有根节点和特定节点的二叉树(不一定是二叉搜索树),如何找到离给定节点最近的叶节点?

对于这个问题,是否有任何特定算法或现有算法的修改?

3 个答案:

答案 0 :(得分:2)

这是一个非常典型的图遍历问题。您可以使用Dijkstra's Algorithm遍历图表并找到到达目的地的最短路径。

在这种情况下我们使用Dijkstra而不是A *因为我们不知道我们的目的地是什么。如果您玩过星际争霸,那么(几乎可以肯定)这是他们用来找工人找到最近的矿物供应或最近需要修理的车辆。

答案 1 :(得分:2)

检查link。 我们的想法是预先遍历给定的树并跟踪数组中的祖先。当我们到达给定键时,我们评估以给定键为根的子树中最近叶子的距离。我们还逐个遍历所有祖先,并找到以祖先为根的子树中最近叶子的距离。我们比较所有距离并返回最小值。

答案 2 :(得分:0)

如果节点维持与其父节点的反向链接的假设为真,则执行BFS就足够了。这个想法首先是到达感兴趣的节点,然后对其子节点及其父链接进行BFS(然后每个父链接将对其子节点进行BFS,排除您已经访问过的节点及其父节点)。您保持从感兴趣的节点到叶子的最小距离(MinDistance),并且不在非叶子节点上进行进一步的BFS遍历,距离> = MinDistance