Categorías
Algorithms Interview

LeetCode: el antepasado común más bajo de un árbol de búsqueda binaria (Java)

Dado un árbol de búsqueda binaria (BST), encuentre el ancestro común más bajo (LCA) de dos nodos dados en el BST.

Análisis

Este problema se puede resolver utilizando la propiedad BST, es decir, left

Solución Java 1: recursivo

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
    TreeNode m = root;
 
    if(m.val > p.val && m.val < q.val){
        return m;  
    }else if(m.val>p.val && m.val > q.val){
        return lowestCommonAncestor(root.left, p, q);
    }else if(m.val<p.val && m.val < q.val){
        return lowestCommonAncestor(root.right, p, q);
    }
 
    return root;
}

Solución Java 2: iterativa

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
    TreeNode t = root;
 
    while(t!=null){
        if(p.val >t.val && q.val >t.val){
            t = t.right;
        }else if (p.val<t.val && q.val<t.val){
            t = t.left;
        }else{
            return t;
        }
    }
 
    return null;
}

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *