ПЕРЕБИРАННЯ ВАРІАНТІВ В ПРОГРАМУВАННІ
i:=1; H[i]:=1; D[i]:=0;
while (i<>0) do
begin
if i=n then {обробка вузла-листка}
if test(H, i) then {друкування повного допустимого розміщення}
{ та повернення до батька незалежно від наявності братів}
begin writs(H, n); i:=i-1; {i>0!} D[i]:=1 end
else
if H[i]
else {повернення до батька – }
{піддерево, в якому він є коренем, вже обійшли}
begin i:=i-1; {i>0!} D[i]:=1 end
else {обробка проміжного вузла}
if (D[i]=0) and test(H, i) then {рух у глибину}
begin i:=i+1; H[i]:=1; D[i]:=0 end
else {рух праворуч або нагору}
if H[i]
begin H[i]:=H[i]+1; D[i]:=0 end
else {рух нагору}
begin i:=i-1; if i>0 then D[i]:=1 end
end
Оформлення програми з необхідними означеннями, ініціалізаціями та нерекурсивною процедурою пошуку залишаємо як вправу.Узагальнимо наведений алгоритм, вважаючи, що, на відміну від задачі про розміщення ферзів, кореневий вузол дерева також містить деяку відповідну інформацію:
заштовхнути кореневий вузол у магазин;
while магазин не порожній do