深度优先:
向节点栈中压入第一个可生长节点;
while 可生长节点数>0 do
begin
选取节点栈的第一个节点,以它为基础生成新的结点;
遍历新节点,如果达到目标状态,则跳出循环;
从可生长节点栈顶删除已使用过的第一个节点;
将新节点压入可生长节点栈;
end;
广度优先:
初始化可生长节点链表,向其中加入第一个可生长节点;
while 可生长节点链表头<>nil do
begin
新节点链表头:=nil;
遍历可生长节点链表,如果达到目标状态,则跳出循环;
遍历可生长节点链表,由各个节点分别生成新节点,加入到新节点链表中去;
释放可生长节点链表;
可生长节点链表头:=新节点链表头;
end;