Есть родительский элемент, у него может быть сколько угодно дочерних, у этих дочерних тоже может быть сколько угодно дочерних и т.д. Как пройти по всем элементам и записать в массив? ЯП не важен, хоть псевдокод. Рекурсивно или нет, тоже разницы нет, какой самый быстрый алгоритм?
nvdfxx, дорогой! Можно попробовать написать и побыстрее - главное решить, какие строки выкинуть. Но я уже стар, чтобы гоняться взапуски - поэкспериментируй сам.
Вопрос к Senior Pomidor developer - а синьор хоть понимает, что это будут разные алгоритмы в зависимости от того, что у вас в основе - дерево, направленный граф, или вообще - ненаправленный граф? Если понимает, то почему не указал явно? Если нет - тогда зачем ему этот алгоритм? Да и алгоритм вообще?
Если дерево растёт бесконечно в глубину, то его можно обрабатывать, используя проход в ширину. То есть, известно, что если спускаться вниз по ветви, то до конца мы не дойдём, но на данном уровне дерево имеет конечный размер.
Если дерево растёт бесконечно в ширину, но при этом имеет конечную глубину (то есть, у узла не два наследника, а из бесконечно много), то можно использовать поиск в глубину.
Roman, Ну, после этого ответа тему можно закрывать - добавить нечего. Имеется всего два алгоритма, примерно равные по сложности в общем случае. Выбор конкретного варианта зависит от факторов, лежащих вне математико-логических построений - т.е. от знаний того, какой приоритетный способ наращивания дерева.
dmshar, тогда не очень понятно как определить обход в ширину :) если при каждом новом вызове мы будем получать новый порядок потомков, то мы не сможем выписать порядок обхода. Впрочем для многих задач это и не требуется :)