adventjs-issues
                                
                                 adventjs-issues copied to clipboard
                                
                                    adventjs-issues copied to clipboard
                            
                            
                            
                        Reto #21 no evalua correctamente un objeto vacío {} (valida para 0 y para 1)
Al final de las intrucciones dice: "Un árbol vacío tiene una altura de 0." Por eso consideré que un objeto vacío {} debería devolver 0, al igual que un null. Para que eso se cumpla hice el siguiente código:
Spoiler warning: Click para ver el código
function treeHeight(tree) {
    let r = 0
    tree ??= {}
    
    if (Object.keys(tree).length != 0) {
        let leftHeight = treeHeight(tree.left)
        let rightHeight = treeHeight(tree.right)
        r = Math.max(leftHeight, rightHeight) + 1
    }
    return r
}
Con estos resultados:
console.log(treeHeight({}))
// Devuelve: 0
console.log(treeHeight(null))
// Devuelve: 0
La página del AdventJS me lo dio como válido con 5⭐. Pero entre las variaciones que hice también probé el siguiente código:
Spoiler warning: Click para ver el código
function treeHeight(tree) {
  if (!tree) return 0
  let leftHeight = treeHeight(tree.left)
  let rightHeight = treeHeight(tree.right)
  return Math.max(leftHeight, rightHeight) + 1
}
Con estos resultados:
console.log(treeHeight({}))
// Devuelve: 1
console.log(treeHeight(null))
// Devuelve: 0
Y la página del AdventJS también me lo dio como válido con 5⭐.
Uno de los 2 debería estar mal, y a mi parecer sería el segundo.
Salu2!