visit method

void visit(
  1. RadixTreeNode<T> node,
  2. String prefixAllowed,
  3. String prefix,
  4. RadixTreeKVVisitor<T?> visitor,
)

Visits the given node of this tree with the given prefix and visitor.

Also, recursively visits the left/right subtrees of this node.

Implementation

void visit(
  RadixTreeNode<T> node,
  String prefixAllowed,
  String prefix,
  RadixTreeKVVisitor<T?> visitor,
) {
  if (node.hasValue && prefix.startsWith(prefixAllowed)) {
    visitor(prefix, node.value);
  }

  var prefixLength = prefix.length;

  for (var child in node.children) {
    if (prefixAllowed.length <= prefixLength ||
        child.prefix[0] == prefixAllowed[prefixLength]) {
      visit(child, prefixAllowed, prefix + child.prefix, visitor);
    }
  }
}