Алгоритм наименьшего общего предка

Итак, я пытался реализовать алгоритм с наименьшим общим предком. Я просмотрел множество различных алгоритмов (в основном варианты решения Траяна или варианты 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
     }

}       
11
задан slimbo 14 June 2011 в 02:31
поделиться