Ищете слово для "сплющивания дерева"

Мне интересно, существует ли существующее слово для описания процесса, который я сейчас использую. Я хочу называть это "сплющиванием дерева", но я чувствую, что должно быть лучшее слово или фраза.

ввод:

  |--D
--B
| |--C
|
A-E
|
| |--G
--F
  |--H

выход:

[ [A, B, D]
  [A, B, C]
  [A, E]
  [A, F, G]
  [A, F, H] ]

Установлено ли имя для этого процесса?

Ответ 1

Перечисление пути?

Обход DFS?

или мой любимый

Дерево arrayfication!

Ответ 2

Как насчет " Увлажняющий" (или DeHydrating) в зависимости от ситуации?

Ответ 3

Я бы сказал, что вы просто пересекаете дерево, сохраняя путь к текущему node. Когда вы посещаете лист, вы печатаете полный путь к листу.

Я не думаю, что есть определенное имя, но оно не сильно отличается от очень простого обхода.

Ответ 4

De-Normalization показалось бы лучшим. Поскольку, действительно, если вы заметили свою новую структуру, у вас есть избыточные данные, и она, по-видимому, будет непосредственно отображаться в концептуальной идее.

Ответ 5

Как насчет "Chainsawing"

Ответ 6

Да, он называется Сериализация

Ответ 7

Я просто столкнулся с вики-статьей " Disjoint Sets", а термин, который он использует, - это "сжатие пути".

Выдержки:

... Второе улучшение, называемое path сжатие, является способом уплощения структура дерева всякий раз На нем используется Find. Идея состоит в том, что каждый node посетил путь к корню node может также быть прикреплен напрямую к корню node; все они разделяют такой же представитель. Для этого, как Найти рекурсивно пересекает tree, он изменяет каждый родитель nodeссылку на корень, чтобы он найденный. Полученное дерево много льстит, ускоряя будущие операции не только по этим элементам, но и по ссылки на них, непосредственно или косвенно.

Ответ 8

Вам нужно сначала выполнить поиск глубины, чтобы захватить каждый путь от корня до листа.

Псевдокод:

global allPaths = []
R = root
currentPath = []
findPaths(R, currentPath)

findPaths(R, currentPath){
if R has no children,
allPaths.add( currentPath )

else
for each child C in R:
findPaths(C, currentPath + R)
}

Ответ 10

Если вход является деревом, а выход - это список списков, которые вы цитируете, вы фактически не ищете фразу для процесса, вы ищете имя для подпрограммы, которую вы вызываете. И имя такой подпрограммы должно быть описанием того, что она возвращает.

Как насчет RootPathsOfLeaves? или их некоторая перегруппировка...