一. 递归算法:
递归过程为:
procedure DFS_TRY(i);
For r:=1 to maxr do
If 子结点MR 符合条件 THEN
产生的子结点MR压入栈;
IF 子结点 MR是目标结点 THEN 输出
ELSE DFS_RY(I+1);
栈顶元素出栈(删去MR);
endif;
enddo;
{*********************main***************************}
program DFS;
初始状态入栈;
DFS_TRY(i);
二. 非递归算法
program DFS(dep);{UNRECIRETION}
dep:=0;
repeat
dep:=dep+1;
j:=j+1;
if mr 符合条件then
产生子结点mr并将其记录
if 子结点是目标 then 输出并出栈
else p:=true;
else
if j>maxj then 回溯 else p:=false;
endif;
until p=true;
until dep=0;
其中回溯过程如下:
procedure backtracking;
dep:=dep-1;
if dep>0 then 取回栈顶元素
else p:=true;