Дерево в виде массива из FAQ. Как определить принадлежность вершины к поддереву?

antd2000

Новичок
Дерево в виде массива из FAQ. Как определить принадлежность вершины к поддереву?

Есть дерево в виде массивов, описанное в http://phpclub.ru/faq/Tree/Internal?v=38y
Как определить принадлежность определенной вершины к определеному поддереву?
(Говоря иначе - нужно определить: является ли вершина "123" каким либо (не обязательно прямым!) потомком вершины "764" ?).

Причем обращу внимание - дерево не в таблице, а в виде массива.
Массив получен парсингом XMLя. Мне собственно нужно скинуть в БД товары из определенной подветки. Вот собственно откуда взялась такая задача.
 

Фанат

oncle terrible
Команда форума
какая проблема в цикле подняться до корня дерева и посмотреть, не был ли среди нод искомого узла?
 

antd2000

Новичок
В этом собственно и проблема.

Во-первых как я понимаю надо набрести на заданную вершину "123". Каким образом? Полным перебором элементов массива и рекурсией ?

Затем плясать от этой вершины назад и смотреть - встретится ли значение вершины "764"?
(Как я понимаю Вы об этом пишите)

Не сложнова то ли?
 

Фанат

oncle terrible
Команда форума
сложновато.
поэтому я пишу совсем о другом.
- сделать список всех предков узла
- посмотреть в этом списке, нет ли нужного

-~{}~ 08.10.09 18:16:

хотя да, это ж массив.
 

antd2000

Новичок
Автор оригинала: *****
- сделать список всех предков узла
Каким образом?

Ведь сначала нужно как то выйти на заданный элемент ?
Как его найти если он где то далеко вложен в массиве ?
 

Фанат

oncle terrible
Команда форума
а парсинг какой - ручной али автоматический?
если ручной - чего бы добавить в массив информациб о родителе?
и вообще представить как-нибудь по-другому. линейно, например
 

antd2000

Новичок
Парсинг ручной (сам пишу скрипт для него).
Кстати - а что за автоматический парсинг ?

А что толку, если инфа о родителе будет?
На начальный элемент все равно не выйти.

По другому хранить...можно конечно, но где бы примеры функции взять или библиотечку под этот метод хранения.
(Дело в том что я программер, а скорее вебмастер)

-~{}~ 08.10.09 18:41:

Хотя есть еще вариант скидывая нужные подветки в mysql заодно формировать список из скинутых веток (это у меня уже есть). И уже по нему искать - есть ли в нем такой элемент или нет.
 

Фанат

oncle terrible
Команда форума
ну вот я тоже подумал, что база-то не обязательно, но вот развернуть дерево в плоский список - самое то будет.
ключом, разумеется - айди, в значении - два поля, папаша и собственно значение.
и вот по этому массиву мы поскачем сивкой-буркой. к нему уже применимо сказанное мной сгоряча выше.

к начальному, соответственно - наше вам с кисточкой, по индексу, под белы ручки.
родителей - циклом в пару оборотов, взял родителя, по индексу дедушку и так до адама с евой.
 
Сверху