0

Я создаю двоичный лабиринт дерева. Дерево имеет 8 листьев, и цель состоит в том, чтобы пересечь дерево и найти «пищу» на одном или нескольких листьях. На каждом узле участник может либо выбрать левый, либо правый узел, чтобы перейти к следующему. Или, это может пройти оба, но по какой-то цене (возможно, 1 временной шаг против 2, выбрав один или другой). Если он достигает листа без пищи, он должен отступить и изменить свое решение. В конечном итоге это превратится в эволюционный алгоритм, в котором стратегии хранятся и развиваются в течение нескольких поколений. Каков наиболее эффективный способ хранения пройденного пути (чтобы участник мог отступить, если пища не найдена)?Binary Tree traversal maze

+1

Определить эффективность. Вы имеете в виду циклы процессора (если да, какие операции вы планируете) или память? –

+0

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

+0

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

ответ

0

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

Пример:

1. Start tree traversal 
2. User picks direction(right/left) 
3. flag which node was visited 
4. store node's index or key in an array