怎么快速删除TreeView中的某类节点

如何快速删除TreeView中的某类节点?
我在TreeView中建有多类节点,以ImageIndex的不同表征不同对象   Node.data   指向对象,   有没有方法能快速删除树中所有同类节点呢,如ImageIndex=2的
因为此类节点很多,当然逐个遍历的删除办法我试过,效果不佳

------解决方案--------------------
好象没办法,你还要释放Data里面对象的内存!
------解决方案--------------------
Node.Data指针所指向的对象,楼主并没有说明他是怎么New出来的,又是怎么Free的。chenzhuo的担心也不是多余的。如果仅仅是一个指针,所指向的对象另有管理者,或者说另有途径Free,那就不用担心了。在此我不参与这个问题的讨论。只是说一下前面我关于节点释放办法的思路。

下面是按我的思路写的代码,不成熟,仅仅是一个思路,应该比遍历要快:

var
NodeArr : array of TTreeNode;//同类的节点,放到这个Array里去。

procedure TForm1.Button1Click(Sender: TObject);//建10个子节点用于试验
var
BootNode, Node : TTreeNode;
I : integer;
begin
BootNode := TreeView1.Items.AddFirst(nil, 'BootNode ');
for I := 1 to 10 do
if (I mod 2) = 0 then//假设节点2、4、6、8、10是同一类
begin
SetLength(NodeArr, Length(NodeArr)+1);
NodeArr[High(NodeArr)] := TreeView1.Items.AddChild(BootNode, '节点 '+IntToStr(I));
end else
Node := TreeView1.Items.AddChild(BootNode, '节点 '+IntToStr(I));
end;

procedure TForm1.Button2Click(Sender: TObject);//释放节点2、4、6、8、10
var
I : integer;
begin
if Length(NodeArr) > 0 then begin
for I := Low(NodeArr) to High(NodeArr) do
NodeArr[I].Free;
SetLength(NodeArr, 0);
end;
end;

//如果节点下有子节点?等等情况...这就需要再详细写代码了。