双向宽搜(PASCAL)的主要程序框架...?

2022-08-20 22:28

RT 是双向的 不是普通BFS...实在不行给过程的伪代码也可以 不要太啰嗦...谢谢~
2个回答
初始化
循环体:
找到元素少的一边队列,找到最后一个元素扩展

搞定!
procedure Tfrm_FmtTree();
var
i,j :integer;
leafList,leafListPlus: TList;
leaf,subNode: TTreeNode;
tv: TTreeView;//引用窗体控件
qry: TADOQuery;//引用窗体控件
begin
//初始化
leafList:=TList.Create;
leafListPlus:=TList.Create;
tv:=tvw1;
tv.Items.Clear;
qry:=qry1;
subNode:=tv.Items.AddChild(nil,'月夜风筝(我)的公司');
leafList.Add(subNode);
//处理
while leafList.Count > 0 do
begin
leafListPlus.Clear;
for i:=0 to leafList.Count-1 do
begin
leaf:=leafList[i];
if leaf.Level = 0 then
qry.SQL.Text:=Format('select code,name,belong from TB where belong = ''%s''',['--'])
else
qry.SQL.Text:=Format('select code,Name,belong from TB where belong = ''%d''',[leaf.StateIndex]);
qry.Open;
for j:= 0 to qry.RecordCount-1 do
begin
subNode:=tv.Items.AddChild(leaf,qry.FieldByName('name').AsString);
subNode.ImageIndex:=subNode.Level;
subNode.StateIndex:=StrToInt(qry.FieldByName('code').AsString);
leafListPlus.Add(subNode);
qry.Next;
end;
end;
leafList.Assign(leafListPlus);
end;
//清理
tv.FullExpand;
leafListPlus.Free;
leafList.Free;
end;
相关问答
PASCAL宽搜~~
2个回答2022-10-22 20:56
比如宽搜一棵二杈树 先建立一个队列 把树根入队 然后从队头开始 遍历队头的每一个孩子 分别将每一个孩子入队 以上反复执行 直到队为空
PASCAL中的宽搜
3个回答2022-08-27 08:15
懂队列吗?懂就好办了 -队列初始化 -while 队首指针=队尾指针then 输出无解 end. 基本就是这样了,没什么难的,好好学吧,我也刚会不久
宽搜 怎么弄pascal
1个回答2022-10-23 23:25
用队列,读取头节点,处理后把与之相关的节点加入队列,直到队列的头节点赶上尾节点 q[1,1]:=x1;q[1,2]:=y1;//最初的节点进队列 t:=1;//队首指针 tail:=1;//队尾指针...
全文
什么是程序框架
1个回答2022-12-14 18:57
不仅仅是类库这么简单。我个人的理解是:完成某项业务流程或者功能的具体方案。框架采用了相对比较成熟的方式或者步骤或者流程去做这件事情,让程序员只专注于逻辑本身或业务本身,省去了很多繁琐的步骤。
小程序可以用什么框架
1个回答2023-05-18 22:21
小程序开发可以使用官方给的开发工具,很方便,其他的框架很难和官方工具这样功能齐全。
程序开发中的框架是什么
1个回答2022-09-19 13:13
我们目前先不要了解那么多 框架是为了方便我们程序员开发 减少代码量 及代码质量的工具 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认...
全文
道易寻小程序 用什么小程序框架写的?
1个回答2023-05-11 03:46
小程序开发可以使用官方给的开发工具,很方便,其他的框架很难和官方工具这样功能齐全。
程序员幽默六则:如何自己写一个框架
1个回答2024-01-26 11:43
程序员幽默六则:如何自己写一个框架 如图所示:
宽度优先搜索算法(pascal)
1个回答2022-08-26 01:14
以走迷宫为例,就是一群人一起出发,然后遇到叉路口就分开走,只要有一个人走出就把所有人带走
宽搜中如何记录深度变化?(pascal)
2个回答2022-07-08 21:30
这样是不对滴..bfs是从一个节点扩展多个节点,所以你要给初始节点一个deep=0.之后从它扩展. 如果从i->j,则deep[j]:=deep[i]+1;deep取决于由那个节点扩展的,而不是循环...
全文
热门问答