关于树的算法,请教! ( 积分: 100 )

  • 主题发起人 主题发起人 wu_delphi
  • 开始时间 开始时间
W

wu_delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
打个比方,现有如下:数据
001(Level_num:1)
00102(Level_num:2)
001030101(Level_num:2)
0010201(Level_num:3)
现想让这些数据构成一棵树,
(1)首先,通过Level_num的级数来判断该数据处于哪个层次中,
(2)其次,通过对个数据的比较来判断,每个数据之间的关系.
由上的说法,可以得出此树,
001(Level_num:1)
|--00102(Level_num:2)
| 0010201(Level_num:3)
|--001030101(Level_num:2)
不知道有没有那位高手写过这方面的算法,小的正急着这方面的资料,不知哪位高手能给些帮助,和这方面的指导...
期待ing......
 
打个比方,现有如下:数据
001(Level_num:1)
00102(Level_num:2)
001030101(Level_num:2)
0010201(Level_num:3)
现想让这些数据构成一棵树,
(1)首先,通过Level_num的级数来判断该数据处于哪个层次中,
(2)其次,通过对个数据的比较来判断,每个数据之间的关系.
由上的说法,可以得出此树,
001(Level_num:1)
|--00102(Level_num:2)
| 0010201(Level_num:3)
|--001030101(Level_num:2)
不知道有没有那位高手写过这方面的算法,小的正急着这方面的资料,不知哪位高手能给些帮助,和这方面的指导...
期待ing......
 
这个太Easy了
两种方法,其中之一,写主要过程如下:
type
RTree=record
id:string;
mc:string;
end;
----------------
表为 id ParentID
001 null
00102 001
0010201 00102
00103 001
0010301 00103
---------
procedure ConstructTree(ParentNode: TTreeNode;
Parentid:string);
var
Node:TTreenode;
pRTree:^RTree;
Ado:Tadoquery;
begin
ado:=Tadoquery.Create(self);
ado.Connection :=adoconnection1;
with adodo
begin
close;
SQL.Clear;
SQL.Add('select * from Table where parentid='+Parentid);
//
open;
while not eofdo
begin
new(pRTree);
pRTree.id :=fieldbyname('id').AsString;
pRTree.mc :=fieldbyname('mc').AsString;
Node:=self.TreeView1.Items.AddChild(ParentNode,pRTree.mc);
Node.Data :=pRTree;

ConstructTree(Node,pRTree.id);
next;
end;
free;
end;
end;
 
还写什么代码,用DBTree就行了
 
dbtree有问题的,有时会删除表内容
 
请参考 http://www.delphibbs.com/delphibbs/dispq.asp?lid=2149670
 
yf168的方法比较常用
 
后退
顶部