Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

323
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!