n-ary树中多个节点的最低公共祖先

时间:2012-05-24 07:20:23

标签: java tree nlp text-processing graph-algorithm

我正在尝试在java中的n-ary树中实现多个节点的LCA。我正在使用句子的解析树,因此可以合理地假设一个节点的子节点数<= 6.这里的多个节点是句子中的两个短语(连续单词序列)。设k为所涉及的节点数。

一种方法是找到k / 2对的两个节点的LCA,我们将获得k / 2个节点。现在递归这些k / 2节点。顺序将是O(nlog k),其中O(n)是线性LCA发现算法的复杂性。我能更有效地做到吗?

1 个答案:

答案 0 :(得分:1)

我使用短语的节点是连续的,即在解析树的叶节点列表中具有连续索引的事实解决了该问题。

segment1包含从start1end1的索引。 segment2 = (start2,end2)也是如此。

(start1, end1)(start2, end2)的必需公共祖先是具有索引min(start1,start2)max(end1,end2)的节点的共同祖先。