可以用队列的方法:
procedure algrathm(PId: String);
var
IDArray: Array[1..100] of String;//用来存放结果的数组
P,Q : Integer;//P指向当前的指针(尾指针),Q为头指针
Qry : TQuery;
ID : String;
begin
P := 1;
Q := 2;
IDArray[1] := PId;
Qry.Create(Self);
Qry.DatabaseName := Basename;//数据库名
While P <> Q do
With Qry do begin
ID := IDArray[P];
Active := FALSE;
Sql.Clear;
Sql.Add('select IDItem from theTable where IDItem = '+ID);
Active := TURE;
first;
While not EOF do begin
IDArray[Q] := FieldByName('IDItem').asString;
Inc(Q);
next;
end;
Inc(P);
end;
end.
在深度优先搜索是才要递归,这里用的是广度有先搜索。结果集在IDArray中。