【发布时间】:2014-03-31 00:01:28
【问题描述】:
所以我一直在研究实现最低共同祖先算法。我查看了许多不同的算法(主要是 Trajan 解决方案的变体或 RMQ 的变体)。
我使用的是非二叉树。我的树经常会在查询之间发生变化,因此预处理不一定是值得的。树的节点不应超过 50-75 个。我想知道是我应该打扰使用他们的算法还是坚持我自己的算法。
我的算法
myLCA(node1, node2) {
parentNode := [ ]
while (node1!=NULL) {
parentNode.push(node1)
node1 := node1.parent
}
while (node2!=NULL) {
for i in parentNode.size {
if (parentNode(i) == node2) {
return node2;
}
}
node2 := node2.parent
}
}
【问题讨论】:
-
嗯,我不明白这是一个真正的问题。您希望收到什么类型的答案?
标签: algorithm tree traversal least-common-ancestor