On Wed, 23 May 2012 17:54:42 -0400, Roman D. Boiko <r...@d-coding.com> wrote:

On Wednesday, 23 May 2012 at 19:51:02 UTC, Steven Schveighoffer wrote:
If you need a sorted tree structure that supports sharing immutable state, you likely have to find a different algorithm than redblack, since adding nodes can modify the tree structure via rotates.

-Steve

I don't need to invent here, and it is definitely feasible. Okasaki provided efficient algorithm for inserting nodes, and, IIRC, rotations (not for deleting, though). But OCaml doesn't map to D easily (neither does Haskel, I think).

I looked up how it could be done, the one thing I was not sure of was the parent node. If you can have multiple references to the same subtree, how do you keep track of the parents. But if you only are concerned about the ancestry of a single node, you can dynamically determine the line in O(lgn) time, and use that for the running of the redblack algorithm.

I'm not sure how efficient it would be.

-Steve

Reply via email to