SRDef syten::T3N::State::truncate_rec | ( | Ptr | ptr, |
Truncation const & | trunc, | ||
State::DropNorm const | dropN | ||
) |
Recursive helper for truncation.
The parent of ptr
is assumed to be normalised in the direction of ptr
.
Assuming that both subtrees exist, the right subtree is then root-normalised without truncation first, followed by a a-normalisation of the current node without truncation. We can then descend into the left subtree to truncate there (its node is properly left-normalised). Once that subtree is normalised, we can left-normalised the node again with truncation, followed by second root-normalisation of the top of the left subtree. This is necessary to truncate “in both directions”.
Following this, we right-normalise the node, descend into the right subtree and again normalise the node with truncation and the top of the right subtree with truncation.
Finally, the node is root-normalised, as expected from a possible parent caller.