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

328
Vistas
¿Cómo determinar si un árbol binario está balanceado o no usando recursividad?

Estoy tratando de devolver verdadero si el árbol está equilibrado y falso si no, se me ocurrió esta solución recursiva a continuación, pero no soy correcto con el valor booleano correcto. Siento que tiene sentido comparar la altura más alta del árbol con la altura más baja. No estoy seguro de dónde me estoy equivocando

 function tree (rootNode) { // Your code here if (!rootNode) return 0; if (!rootNode.left && !rootNode.right) return 0; let minHeigth = 1 + Math.min(tree(rootNode.left), tree(rootNode.right)) let maxHeigth = 1 + Math.max(tree(rootNode.left), tree(rootNode.right)) if(maxHeigth - minHeigth <= 1){ return true }else{ return false } }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Mi algoritmo recursivo será así.

 function isBalanced(rootNode){ if(rootNode == null){ return true; } if(checkHeight(rootNode) === -1){ return false; } else{ return isBalanced(root.left) && isBalanced(root.right); } }

y el método auxiliar checkHeight que verificará la altura será

 function checkHeight(rootNode){ if(root ==null){ return 0; } let leftHeight=checkHeight(root.left); let rightHeight=checkHeight(root.right); if(Math.abs(leftHeight - rightHeight) > 1){ return -1; } else{ return Math.max(leftHeight,rightHeight) +1; } }

NOTA: Este Algo tendrá la complejidad de tiempo de O(N)

about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema principal es que su función está mezclando dos cosas:

  • Devolviendo la altura (número)
  • Devolviendo si está balanceado (booleano)

Si el propósito final es devolver un booleano, entonces necesita una función diferente para obtener la altura (un número).

En segundo lugar, al determinar la altura, las dos primeras líneas de su código muestran una inconsistencia:

  • para un árbol null (vacío) se determina que su altura es 0
  • para un nodo sin hijos, también se determina que su altura es 0

Sin embargo, estos dos árboles tienen una altura diferente. Si se considera que un solo nodo (raíz) tiene altura 0, entonces un árbol vacío tiene altura -1. Esto está en línea con Wikipedia :

La altura de un nodo es la longitud del camino descendente más largo hasta una hoja desde ese nodo. La altura de la raíz es la altura del árbol. La profundidad de un nodo es la longitud del camino a su raíz (es decir, su camino raíz). Esto suele ser necesario en la manipulación de los diversos árboles autoequilibrados, en particular los árboles AVL. El nodo raíz tiene profundidad cero, los nodos hoja tienen altura cero y un árbol con un solo nodo (por lo tanto, una raíz y una hoja) tiene profundidad y altura cero. Convencionalmente, un árbol vacío (árbol sin nodos, si se permiten) tiene una altura −1.

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