[Lazarus] In search of a component for holding a table of strings
Werner Pamler
werner.pamler at freenet.de
Tue Jan 10 14:01:51 CET 2017
> I think that may not be possible. Your data may be ordered already,
> but that does not guerantee that there is not already data inside the
> tree that must be ordered "inside" the group you add?
I am thinking of loading a spreadsheet from file. Initially the sheet (=
tree) is empty. The cells in the standard spreadsheet files are arranged
by rows, starting at the top; and within each row, the cells are ordered
from left to right. So, the reader catches the cells in the correct
order (the tree sorts the cells exactly in the same way). A standard
"Add" of the tree calls "FindInsertPos" which seeks for the correct
position of the new cell. But every time this search starts from the
root which is unnecessary from my pov because the new cell should be at
the end. There is no "Append" or "AddtoEnd" method.
Maybe I should remember the node of the previously added cell, and when
the next cell is to be added I should attach it as a right child of this
node.
Unfortunately I am not very experienced with this kind of trees. For
example: Is it necessary to rebalance the AVLtree immediately after each
insertion, or can I wait until all nodes exist? There is a
"BalanceAfterInsert" method with the new node as a parameter - this
indicates that balancing should occur immediately after insert. But this
method is private and thus cannot be called from a derived tree
implementing an "AddToEnd" method.
More information about the Lazarus
mailing list