treeview中递归的问题(20分)

  • 主题发起人 主题发起人 caochen
  • 开始时间 开始时间
C

caochen

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个函数,传入两个节点(treenode)的level,从大的level值开始向上找节点,
使找到的节点level值和小值相同,我想用递归,可是不知道怎么实现,那位高手帮个忙!
分数不多了,只能提供这些了:(
 
完全不需要用递规
node1, node2 : Ttreenode;
var
i: integer;
node : Ttreenode;
begin
if node1.level>node2.level then
begin
node := node1
i:= node2.level;
end
else
begin
node:= node2;
i:= node1.level;
end;
repeat
node := node.parent;
until node.level=i;

end;
 
用个循环不是很好吗,为什么用递归?
 
假设树是下面这样的:

0
1
11
12
13
131
1311 -----------> 这个节点的级别是4,假设这就是传递的级别数大的那个节点
132
2
21 --------------------> 这个节点的级别是2,假设这就是传递的级别数小的那个节点
211
2111
3
31
32
321

那么,你最终想得到什么效果呢??你只给出节点的级别是不行的,如果是在一个分支上,
那就太简单了
 
如果要用递归的话
var
i: integer=假设已经判断好了node1,node2小的level值
procedure getparentofnode(node: Ttreenode);
begin
if i<node.level then
getparentofnode(node);
//得到了有什么用?你会把以前每次的node值都得到一遍
end;
 
接受答案了.
 
后退
顶部