This is rather old subject, but I've tested TTreeView in non-visual state, and tested. That is,
var
tv1 : TTreeView;
ti : integer;
begin
tv1 := TTreeView.Create(nil);
for ti := 1 to 100000 do tv1.items.add(nil, 'Node ' + IntToStr(Random(100000)));
// .. other operations
tv1.Free;
end;
This code does not display visual form.
I've used the same operation with visual component on a form. The time took 8 times longer in the case of having visual form.
But when I set 'visible' property of the component on the form, both took very similar result.
So if not a situation when speed is really needed, just setting visibility to false will lessen the operation load in the tree structure.