El ancestro menos común ( el ancestro común más bajo ) de los vértices u y v en el árbol con raíz T es el vértice más distante de la raíz del árbol, que se encuentra en ambos caminos desde u y v hasta la raíz, es decir, es el ancestro de ambos vértices. La abreviatura generalmente aceptada es LCA del inglés. ancestro común más bajo (menos) .
El algoritmo más simple e ingenuo para encontrar el ancestro menos común es calcular las profundidades de u y v y avanzar gradualmente en el árbol desde cada vértice hasta encontrar un vértice común:
Procedimiento ACV( u , v ): h1 := profundidad( u ) // profundidad( x ) = profundidad del vértice x h2 := profundidad( v ) mientras que h1 ≠ h2: si h1 > h2: u := padre( u ) h1 := h1 - 1 más : v := padre( v ) h2 := h2 - 1 while u ≠ v : u := padre( u ) // padre( x ) = ancestro inmediato de x v := padre( v ) te devuelvoEl tiempo de ejecución de este algoritmo es O ( h ), donde h es la altura del árbol. Además, es posible que se requiera un preprocesamiento de tiempo O ( n ) para encontrar el ancestro inmediato de todos los nodos en el árbol (pero esta estructura generalmente ya está presente en el árbol).
Sin embargo, hay algoritmos más rápidos: