Обход бинарного дерева без рекурсии

120
01 апреля 2019, 15:30

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

  $massive[2]["id"] = 2;
          $parentNosology[] = 2;
          $childNosology = [];
          while($childNosology != NULL){
            foreach($parentNosology as $keyNosology => $valueNosology){
              $childNosology[] = $this->cicleFree($valueNosology);
              $massive[$valueNosology]["children"] = $childNosology[0];
            }
            unset($parentNosology);
            foreach($childNosology as $keyChild => $valueChild){
              foreach($valueChild as $k => $v){
                if($v["id"] != NULL)
                $parentNosology[] = $v["id"];
              }
            }
            unset($childNosology);
          }
public function cicleFree($nosologyMassive)
    {
            $nosologyParent = $this->_database->query("SELECT `code` FROM `md_nosology` WHERE `parent_code` = ".$nosologyMassive);
            foreach ($nosologyParent as $key => $value) {
                $allNosolog[$value["code"]]["id"] = $value["code"];
            }
        return $allNosolog;
    }
Answer 1

Обход бинарного дерева по уровням с использованием очереди:

//начали с корня
queue.insert(root);
while (queue is not empty) {
   node = queue.extract;
   обработать node;
   if (node.left <> Nil)
       queue.insert(node.left);
   if (node.right <> Nil)
       queue.insert(node.right);
}
READ ALSO
Странное поведение базы данных MariaDB

Странное поведение базы данных MariaDB

Если я выполняю запрос на сервере(ubuntu 1604) через консоль в mysql

141
Создание опций в opencart

Создание опций в opencart

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

151
Как распарсить JSON PHP?

Как распарсить JSON PHP?

Имеется такая строка (после json_decode):

129
Сформировать массив бинарного дерева

Сформировать массив бинарного дерева

Как из этого массива сформировать массив бинарного дерева через циклы? Не используя рекурсию и классы

134