-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchallenge22.js
82 lines (72 loc) · 1.38 KB
/
challenge22.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
//https://adventjs.dev/challenges/22
// tenemos el árbol en forma de objeto
const tree = {
value: 1, // el nodo raíz siempre es uno, porque es la estrella ⭐
left: {
value: 2, // el nodo izquierdo necesita dos decoraciones
left: null, // no tiene más ramas
right: null, // no tiene más ramas
},
right: {
value: 3, // el nodo de la derecha necesita tres decoraciones
left: null, // no tiene más ramas
right: null, // no tiene más ramas
},
}
/* Gráficamente sería así:
1
/ \
2 3
1 + 2 + 3 = 6
*/
console.log(countDecorations(tree)) // 6
const bigTree = {
value: 1,
left: {
value: 5,
left: {
value: 7,
left: {
value: 3,
left: null,
right: null,
},
right: null,
},
right: null,
},
right: {
value: 6,
left: {
value: 5,
left: null,
right: null,
},
right: {
value: 1,
left: null,
right: null,
},
},
}
/*
1
/ \
5 6
/ / \
7 5 1
/
3
*/
console.log(countDecorations(bigTree)) // 28
export default function countDecorations(bigTree) {
// ¡No olvides compartir tu solución en redes!
let count = 0
const navigator = (obj) => {
count += obj.value
obj.left ? navigator(obj.left) : null
obj.right ? navigator(obj.right) : null
}
navigator(bigTree)
return count
}