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 Solución Java 2: iterativa
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;
}
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;
}