AVL vs Red-Black tree

Daniel K. O. danielosmari@gmail.com
Thu Feb 15 12:05:00 GMT 2007


On 2/15/07, Paolo Carlini <pcarlini@suse.de> wrote:
> Please be patient, thanks.

Well, any response is better than none. :)


> There are lots of issues here. First, you
> should include a pointer to the discussion on comp.lang.c++.moderated
> coming to the conclusion that AVL trees are 100% ok from the conformance
> point of view (in case, detail why your specific version is).

Oh, I forgot to include the link in my original message. My bad.
http://tinyurl.com/36lnro

See John Potter's responses. The relevant part:
"Yes an AVL tree may perform more rotations to rebalance after an
erase than an RB tree.  [...]  However, the requirements are amortized
across all possible locations.  Because of the amortization, the AVL
tree will still do a constant number of operations after erase.  The
constant may be greater than that for the RB, but it will still be a
constant. [...] It does satisfy
the standard."

If needed I can enumerate all the insertion and deletion requirements
from the standard, and cite more authoritative sources that assert the
AVL tree properties that satisfy the requirements.

Also, if that's relevant, I can describe with more details the
implementation (not that I think the comments for the RB routines are
any clearer). I don't know if it's recommended to incorporate too much
text into the source files.


> Second,
> you should know that this kind of large, ABI-breaking change, can only
> be suited for the next ABI, so-called v7, thus no hurry for current GCC
> mainline, where we are staying with 6.x.

Sure. But ABI breakage could be avoided by simply changing the body of
the functions in tree.cc; unless of course the extra bit required by
an AVL tree node could cause some problem.


> Last but not least, from a
> legal point of view, before the GCC project can even think accepting
> large contributions, a copyright assignment must be on file

Now that's some interesting point: what's considered a "large,
significant contribution"?
I wrote all the code (that is, 2 routines, plus some small changes to
the others) around the libstdc++ implementation, so I would consider
it a derived minor contribution.
But that's no problem, I'm willing to do the paperwork if needed.


Thanks for your attention.

-- 
Daniel K. O.
"The only way to succeed is to build success yourself"



More information about the Libstdc++ mailing list