Слияние и перестройка вложенных объектов с агрегацией
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