二叉树中节点之间的距离?

时间:2012-06-18 21:16:39

标签: algorithm recursion distance

这必须是递归算法

dis(tree, x, y)< - 函数调用 x& y是节点

每个递归调用返回(dx,dy,dxy) dx是x的深度 dy是y的深度 dxy是彼此的距离

我正在考虑使用最低共同祖先,但这并不适合这种格式(没有全局变量)。

2 个答案:

答案 0 :(得分:3)

  

这必须是递归算法

我认为你的意思是作为对你想要的答案的约束(有迭代解决方案)。递归(功能)解决方案如下:

dis(tree, x, x) = 0

dis(tree, x, NULL) = INF
dis(tree, NULL, x) = INF 

dis(tree, x, y) = min(dis(tree, parent(x), y)+1, dis(tree, x, parent(y))+1)

答案 1 :(得分:0)

如果树是双重链接的,您可以从节点x搜索节点y进行广度优先搜索。