Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

223
Vistas
Problema de Invert Binary Tree Js Leet: confundido acerca de la variable devuelta

Entonces, esencialmente existe este problema : lo que estamos haciendo para invertir el árbol es

  1. Crear un nuevo TreeNode
  2. Asignar raíz->izquierda a ->derecha
  3. Asignar raíz->derecha a ->izquierda

La solucion es

 function invertTree(root) { const queue = [root]; while (queue.length) { const n = queue.pop(); if (n != null) { [n.left, n.right] = [n.right, n.left]; queue.push(n.left, n.right); } } return root; };

Sin embargo, la parte que me confunde es que el cambio se hizo para poner en cola, no para rootear. ¿Por qué regresamos a la raíz al final? Parece que tenemos acceso directo a la referencia de la raíz inicial. Pensé que la raíz dentro de la cola es una copia de la raíz. esa es la parte que me confunde. ¿Por qué es una referencia y no una copia? ¿Es porque no hemos usado new Array()?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Si observa de cerca, el árbol se está invirtiendo en su ciclo while y la cola solo funciona como una estructura de datos de soporte ... es por eso que está devolviendo la raíz después de que se invierte el árbol

about 4 years ago · Juan Pablo Isaza Denunciar

0

Como dice el problema, debe devolver la raíz. Pero antes de eso, tienes que invertirlo.

La lógica es mantener una matriz llamada queue que almacene el siguiente TreeNode que se invertirá y lo hace iterativamente dentro de un ciclo while.

En primer lugar, el algoritmo comienza con la cola llena con la raíz, por lo que const queue = [root] .

Luego, obtiene el último elemento de la cola (con .pop() ), y si no es un nodo nulo, llámelo n e invierta sus ramas izquierda y derecha haciendo: [n.left, n.right] = [n.right, n.left] . Este es el momento en el que hacemos cambios en la raíz .

Al sacarlo de la queue , tenemos acceso directo a la referencia del objeto root inicial, y cualquier cambio que hagamos en sus nodos lo afectará.


Más tarde, el algoritmo empuja a la queue los nodos izquierdo y derecho de root para invertirlos. Hace que el bucle vuelva a ejecutarse realizando la misma lógica en cada rama. Eventualmente, siempre apunta a un nodo que hace referencia a root , lo que explica por qué cambia indirectamente.

Deja de ejecutarse cuando la longitud de la cola es 0, que es cuando la cola ya no recibe más nodos, lo que significa que el árbol se invirtió correctamente.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda