Я шукаю найефективніший алгоритм взяти дерево (зберігається як список ребер; АБО як список відображень від батьківського вузла до списку дочірніх вузлів); і створити для КОЖНОГО вузла список усіх вузлів, що спускаються з нього (рівень аркуша та рівень без листя).
Реалізація повинна здійснюватися через цикли замість рекусії, через масштаб; і в ідеалі має бути O (N).
Це питання стосується стандартного досить очевидного рішення для пошуку відповіді для ONE вузла на дереві. Але очевидно, що повторення цього алгоритму на кожному дереві є дуже неефективним (від верхньої частини голови, від O (NlogN) до O (N ^ 2)).
Корінь дерева відомий. Дерево має абсолютно довільну форму (наприклад, не N-Nary, не врівноважене жодним чином, формою чи формою, неоднакова глибина) - деякі вузли мають 1-2 дітей, деякі мають 30K дітей.
На практичному рівні (хоча це не повинно впливати на алгоритм) дерево має ~ 100K-200K вузлів.