Categorías
Algorithms

LeetCode – Aplanar el árbol binario a la lista vinculada

Dado un árbol binario, aplánelo a una lista vinculada en el lugar.

Por ejemplo,
Dado

         1
        / 
       2   5
      /    
     3   4   6

El árbol aplanado debería verse así:

   1
    
     2
      
       3
        
         4
          
           5
            
             6

Solución Java

Baje por el árbol de la izquierda, cuando el niño derecho no sea nulo, empuje al niño derecho a la pila.

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public void flatten(TreeNode root) {
        Stack<TreeNode> stack = new Stack<TreeNode>();
        TreeNode p = root;
 
        while(p != null || !stack.empty()){
 
            if(p.right != null){
                stack.push(p.right);
            }
 
            if(p.left != null){
                p.right = p.left;
                p.left = null;
            }else if(!stack.empty()){
                TreeNode temp = stack.pop();
                p.right=temp;
            }
 
            p = p.right;
        }
    }
}

  LeetCode - Partición a subconjuntos de suma igual K (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 *