Categorías
Algorithms

Convertir BST en una lista ordenada doblemente enlazada (Java)

Deje que el hijo izquierdo de cada nodo sea el siguiente nodo más pequeño y el hijo derecho de cada nodo sea el siguiente nodo más grande.

Node prev = null;
Node head = null;
 
public Node treeToDoublyList(Node root) {
    if (root == null) {
        return null;
    }
 
    helper(root);
 
    head.left = prev;
    prev.right = head;
 
    return head;
}
 
private void helper(Node p) {
    if (p == null) {
        return;
    }
 
    helper(p.left);
 
    //handle current
    if (prev == null) {
        head = p;
    } else {
        prev.right = p;
        p.left = prev;
    }
 
    prev = p;
 
    helper(p.right);
}

  LeetCode - Árbol simétrico (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 *