这必须是递归算法
dis(tree, x, y)
< - 函数调用
x& y是节点
每个递归调用返回(dx,dy,dxy) dx是x的深度 dy是y的深度 dxy是彼此的距离
我正在考虑使用最低共同祖先,但这并不适合这种格式(没有全局变量)。
答案 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进行广度优先搜索。