Az u és v csúcsok legkevésbé közös őse ( legalacsonyabb közös őse ) a T gyökerező fában a fa gyökerétől legtávolabbi csúcs, amely mindkét u -tól és v -től a gyökérig vezető úton fekszik, azaz mindkettő őse. csúcsok. Az általánosan elfogadott rövidítés az angol LCA. legalacsonyabb (legkisebb) közös ős .
A legegyszerűbb, legnaivabb algoritmus a legkevésbé közös ős megtalálására az, hogy kiszámítja az u és a v mélységét, és fokozatosan halad felfelé a fán minden csúcstól, amíg meg nem talál egy közös csúcsot:
Eljárás LCA( u , v ): h1 := mélység( u ) // mélység( x ) = csúcsmélység x h2 := mélység( v ) míg h1 ≠ h2: ha h1 > h2: u := szülő( u ) h1 := h1 - 1 else : v := szülő( v ) h2 := h2 - 1 míg u ≠ v : u := szülő( u ) // szülő( x ) = x közvetlen őse v := szülő( v ) vissza uEnnek az algoritmusnak a futási ideje O ( h ), ahol h a fa magassága. Ezen kívül O ( n ) időbeli előfeldolgozásra lehet szükség , hogy megtaláljuk a fa összes csomópontjának közvetlen ősét (de ez a struktúra általában már jelen van a fában).
Vannak azonban gyorsabb algoritmusok: