Fusion et restructuration d’objets imbriqués avec agrégation

JavaScript Hard objects

Tâche «Fusion et restructuration d’objets imbriqués avec agrégation»

Écrivez une fonction qui prend un tableau d’objets avec les champs : id (nombre), parentId (nombre ou null), name (chaîne) et value (nombre). Il est nécessaire de construire un arbre où chaque nœud contient les champs id, name, value (somme des value de tous les nœuds enfants et de son propre champ), children (tableau des nœuds enfants, trié par name dans l’ordre alphabétique). La racine est considérée comme le nœud avec parentId = null. Si parentId n’est pas trouvé, l’objet est ignoré. Si plusieurs objets ont le même id, ne conserver que le premier. Afficher l’arbre résultant sous forme de chaîne JSON (sans espaces). Il est garanti qu’il existe exactement une racine.

Format d\ entrée

La première ligne est le nombre N (nombre d’objets). Ensuite N lignes, chacune au format : id parentId name value (les champs sont séparés par un espace, name est une chaîne sans espaces).

Format de sortie

Une seule ligne — la représentation JSON du nœud racine de l’arbre (avec les children imbriqués).

Exemples

Exemple 1

ENTRÉE
3 10 null A 100 20 10 B 50 30 10 C 30
SORTIE
{"id":10,"name":"A","value":180,"children":[{"id":20,"name":"B","value":50,"children":[]},{"id":30,"name":"C","value":30,"children":[]}]}
main.js