Mesclagem e reestruturação de objetos aninhados com agregação
JavaScript
Hard
objects
Tarefa «Mesclagem e reestruturação de objetos aninhados com agregação»
Escreva uma função que recebe um array de objetos com os campos: id (número), parentId (número ou null), name (string) e value (número). É necessário construir uma árvore, onde cada nó contém os campos id, name, value (soma do value de todos os nós filhos e do seu próprio), children (array de nós filhos, ordenado por name em ordem alfabética). A raiz é considerada o nó com parentId = null. Se parentId não for encontrado, o objeto é ignorado. Se vários objetos tiverem o mesmo id, mantenha apenas o primeiro. Exiba a árvore resultante como uma string JSON (sem espaços). É garantido que existe exatamente uma raiz.
Formato de Entrada
A primeira linha é o número N (quantidade de objetos). Em seguida, N linhas, cada uma no formato: id parentId name value (campos separados por espaço, name é uma string sem espaços).
Formato de Saída
Uma única linha — a representação JSON do nó raiz da árvore (com children aninhados).
Exemplos
Exemplo 1
ENTRADA
3
10 null A 100
20 10 B 50
30 10 C 30
SAÍDA
{"id":10,"name":"A","value":180,"children":[{"id":20,"name":"B","value":50,"children":[]},{"id":30,"name":"C","value":30,"children":[]}]}
main.js