Dynamic Accordion Drawing
This page is for noting the significant differences between the static versions of Accordion Drawing applications (and base generic code) and dynamic versions. Also should include new application requirements that were not satisfiable by the original code which prompted the change to dynamic Accordion Drawing.
Original applications versus new changes
Generic code
- Red-black tree for storing split lines instead of array
- Indexing split lines not possible
- Array of length N no longer needed
TreeJuxtaposer was not to be changed to a dynamic Accordion Drawing infrastructure as it's not a priority to support tree editing due to complexity involved with user-controlled modifications of the topology (more info needed here?). Simple editing of labels will be supported to provide renaming nodes (add/delete/rename node names through their labels) and these changes will be saved back to a new tree file. These changes are not what we consider dynamic.
Where new dynamic code uses
- Store leaves in split line hierarchy
- Do not keep an array of leaves indexed (this may have to change) as we can index them from the split line hierarchy with index lookups of split lines
- Might have issues with range lookups during descent drawing
- right-most leaf of entire tree not in the hierarchy (one more leaf than we have split lines, arbitrary choice either left-most or right-most)
- Nodes in topology still store reference to left- and right-most leaves
- Nodes still keyed (integers) the same as original method (depth-first/left-to-right (top-down) numbering)
- If node with key K is a right-most leaf of any internal node N, then K+1 is next internal node that is not in the subtree under N, or an ancestor of N (is either a sibling or ancestor of N's sibling)