This outlined method is not exclusive to binary search trees.
It may be used to obtain functional variants of more variants of pointer data structures, of which binary search trees are a prime example.
...
...
@@ -80,12 +81,12 @@ When semi-persistence is sufficient, upon arriving at a vertex asking for the st
We start with the default values and apply all changes that happened earlier than $A$ in chronological order overwriting if there are multiple changes for the same field or pointer.
This process yields the correct state of the vertex for version $A$.
There are several different options for protocol of changes.
In fact, it might be easier to just copy all of the other fields the vertex possesses as well if one of them changes.
There are several options for protocol of changes.
In fact, it might be easier to just copy all other fields the vertex possesses as well if one of them changes.
One change will therefore hold new values for all fields and pointers of the vertex.
By embedding some data structure into a fat node, identification of the correct fields may be faster.
For full-persistence we also need to resolve the issue of how to effectively determining which changes should be applied.
For full-persistence we also need to resolve the issue of how to effectively determine which changes should be applied.
It will be addressed later through introduction of total ordering of all versions.
Looking at the memory consumption, it appears clear that the amount consumed stems from the total number of changes done by the balancing algorithm across all operations.