-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathReto#21.js
103 lines (91 loc) · 2.14 KB
/
Reto#21.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
Reto #21: 🎄 Calcula la altura del árbol de Navidad
Santa Claus 🎅 está decorando un árbol de Navidad mágico 🪄, que este año tiene una estructura especial en forma de árbol binario. Cada nodo del árbol representa un regalo, y Santa quiere saber la altura del árbol para colocar la estrella mágica en la punta.
Tu tarea es escribir una función que calcule la altura de un árbol binario. La altura de un árbol binario se define como el número máximo de niveles desde la raíz hasta una hoja. Un árbol vacío tiene una altura de 0.
// Definición del árbol
const tree = {
value: '🎁',
left: {
value: '🎄',
left: {
value: '⭐',
left: null,
right: null
},
right: {
value: '🎅',
left: null,
right: null
}
},
right: {
value: '❄️',
left: null,
right: {
value: '🦌',
left: null,
right: null
}
}
}
// Representación gráfica del árbol:
// 🎁
// / \
// 🎄 ❄️
// / \ \
// ⭐ 🎅 🦌
// Llamada a la función
treeHeight(tree)
// Devuelve: 3
*/
/**
* @param {{ value: string; left: any; right: any }} tree
* @returns {number} - Height of the tree.
*/
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
}
// Tests
const tree = {
value: '🎁',
left: {
value: '🎄',
left: {
value: '⭐',
left: null,
right: null
},
right: {
value: '🎅',
left: null,
right: null
}
},
right: {
value: '❄️',
left: null,
right: {
value: '🦌',
left: null,
right: null
}
}
}
// Representación gráfica del árbol:
// 🎁
// / \
// 🎄 ❄️
// / \ \
// ⭐ 🎅 🦌
// Llamada a la función
console.log(treeHeight(tree))
// Devuelve: 3
// La siguiente línea sólo es necesaria para ejecutar los tests de jest
module.exports = { treeHeight }