Categorías
Algorithms

LeetCode – Recuperar árbol de búsqueda binaria (Java)

Dos elementos de un árbol de búsqueda binaria (BST) se intercambian por error. Recupera el árbol sin cambiar su estructura.

Solución Java

Inorder traveral devolverá valores en un orden creciente. Entonces, si un elemento es menor que su elemento anterior, el elemento anterior es un nodo intercambiado.

public class Solution {
    TreeNode first;
    TreeNode second; 
    TreeNode pre; 
 
    public void inorder(TreeNode root){
        if(root==null)
            return;
 
        inorder(root.left);
 
        if(pre==null){
            pre=root;
        }else{
            if(root.val<pre.val){
                if(first==null){
                    first=pre;
                }
 
                second=root;
            }
            pre=root;
        }
 
        inorder(root.right);
    }
 
    public void recoverTree(TreeNode root) {
        if(root==null)
            return;
 
        inorder(root);
        if(second!=null && first !=null){
            int val = second.val;
            second.val = first.val;
            first.val = val;
        }
 
    }
}

  LeetCode - Recipiente con más agua (Java)

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 *