За последние 24 часа нас посетили 18696 программистов и 1650 роботов. Сейчас ищут 933 программиста ...

Рекурсивный обход древовидной структуры

Тема в разделе "Вопросы от блондинок", создана пользователем bamper, 16 ноя 2008.

  1. bamper

    bamper Активный пользователь

    С нами с:
    4 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    Здравствуйте, товарищи (господа) программисты.
    Уже долго думаю над одной задачей и сам решение найти не могу. Может быть я, конечно, и сам додумаюсь когда -нибудь, но время поджимает. Поэтому прошу вашей помощи.

    Скрипт расчитывает бонусы членов системы многоуровневого маркетинга (MLM). Структура древовидная (спонсор, под ним один или несколько человек, под теми тоже, и.т.д). Обхожу дерево рекурсивно и подсчитываю сумму закупок для каждого уровня.

    Вопрос №1:
    Как определить, что потомки принадлежат разным ветвям?

    Вопрос №2:
    Как можно в одной функции, обходя всё дерево с корня, подсчитывать объёмы не только для первого члена, а сразу для всех?

    Спасибо.
     
  2. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Сейчас и так финансовый кризис, вы еще свои пирамиды к нему добавляете :(
    Ответ 1. $item1["parentid"]!=$item2["parentid"]
    Ответ 2. Передавать итерационные величины (напр. текущий объем) через список аргументов во время рекурсивного вызова.

    P.S. Не могу удержаться. Цитата из "Симпсонов"
    Предприниматель: У нас не какая-нибудь очередная финансовая пирамида. Наш символ - трапеция! *показывает на рисунок пирамиды с отрезанной верхушкой, в этот момент слышна сирена* О черт, опять полиция... *сигает в окно*
     
  3. bamper

    bamper Активный пользователь

    С нами с:
    4 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    Да этот заказ ещё докризисный. Хотя я не совсем понял твой ответ. Ну всё равно - спасибо. Буду разбираться.