遍历treeview并且按一定要求给节点赋值(100分)

  • 主题发起人 少爷的拐杖
  • 开始时间

少爷的拐杖

Unregistered / Unconfirmed
GUEST, unregistred user!
//这是帮一个女孩子作的作业,演示根据一段文字(英文,半角)生成其中字符的哈夫曼编码
//PS:女孩子很漂亮
....
最终我在treeview中生成了一棵二叉树(哈夫曼树)
每个节点都是X(M)的形式
X是要编码的字符,如果此节点不是叶子,X=空格
M是X的权
现在我如何才能遍历这个treeview得到编码?
 
我这个函数可以实现对某个分支的遍历,如果你想遍历整个TreeView,用Count和AbsoluteIndex做个循环
就可以了,就不用什么遍历了,看看对你是否有用。
procedure TForm1.Ransack(iParentIndex : Integer);
//iParentIndex是你所要遍历的那个分支的
//根节点的绝对序号,就是该节点的AbsoluteIndex属性
var
ParentNode, ChildNode, TempNode : TTreeNode;
//父节点 子节点 临时中转节点
begin
ParentNode := TreeView1.Items.Item[iParentIndex];
ChildNode := ParentNode.getFirstChild;
while ChildNode <> nil do //找到第一个子节点了
begin
//-----------------------------
Memo1.Lines.Add(ChildNode.Text);
//这里是找到子节点后你的处理代码
//-----------------------------
TempNode := ChildNode.getFirstChild;
if TempNode <> nil then //如果还有子节点,则递归
begin
Ransack(ChildNode.AbsoluteIndex);
end;
TempNode := ChildNode;
ChildNode := ParentNode.GetNextChild(TempNode);
end;
end;
 
问题解决了
 
顶部