Слияние и перестройка вложенных объектов с агрегацией

JavaScript Сложный objects

Задача «Слияние и перестройка вложенных объектов с агрегацией»

Напишите функцию, которая принимает массив объектов с полями: id (число), parentId (число или null), name (строка) и value (число). Необходимо построить дерево, где каждый узел содержит поля id, name, value (сумма value всех дочерних узлов и своего собственного), children (массив дочерних узлов, отсортированный по name в алфавитном порядке). Корнем считается узел с parentId = null. Если parentId не найден, объект игнорируется. Если несколько объектов имеют одинаковый id, оставить только первый. Вывести результирующее дерево в виде JSON-строки (без пробелов). Гарантируется, что существует ровно один корень.

Формат ввода

Первая строка — число N (количество объектов). Затем N строк, каждая в формате: id parentId name value (поля разделены пробелом, name — строка без пробелов).

Формат вывода

Одна строка — JSON-представление корневого узла дерева (с вложенными children).

Примеры

Пример 1

ВВОД
3 10 null A 100 20 10 B 50 30 10 C 30
ВЫВОД
{"id":10,"name":"A","value":180,"children":[{"id":20,"name":"B","value":50,"children":[]},{"id":30,"name":"C","value":30,"children":[]}]}
main.js