Fusión y reestructuración de objetos anidados con agregación
JavaScript
Hard
objects
Tarea «Fusión y reestructuración de objetos anidados con agregación»
Escriba una función que reciba un array de objetos con los campos: id (número), parentId (número o null), name (cadena) y value (número). Es necesario construir un árbol, donde cada nodo contenga los campos id, name, value (suma del value de todos los nodos hijos y el propio), children (array de nodos hijos, ordenado por name en orden alfabético). La raíz es el nodo con parentId = null. Si no se encuentra parentId, el objeto se ignora. Si varios objetos tienen el mismo id, conservar solo el primero. Mostrar el árbol resultante como una cadena JSON (sin espacios). Se garantiza que existe exactamente una raíz.
Formato de entrada
La primera línea es el número N (cantidad de objetos). Luego N líneas, cada una en el formato: id parentId name value (los campos están separados por espacio, name es una cadena sin espacios).
Formato de salida
Una línea: la representación JSON del nodo raíz del árbol (con children anidados).
Ejemplos
Ejemplo 1
ENTRADA
3
10 null A 100
20 10 B 50
30 10 C 30
SALIDA
{"id":10,"name":"A","value":180,"children":[{"id":20,"name":"B","value":50,"children":[]},{"id":30,"name":"C","value":30,"children":[]}]}
main.js