searchNodes method

Iterable<RTreeNode<T>> searchNodes({
  1. Predicate1<RTreeNode<T>>? nodePredicate,
  2. bool leaves = true,
})

Traverses the tree, returning nodes that match a condition. By default, this method returns only leaf nodes, but intermediate-level nodes can also be returned by passing leaves=False. The condition is evaluated for each node at every level of the tree, and if it returns False, the entire subtree is eliminated.

Implementation

Iterable<RTreeNode<T>> searchNodes({
  Predicate1<RTreeNode<T>>? nodePredicate,
  bool leaves = true,
}) {
  final callback = leaves
      ? (RTreeNode<T> node) => (node.isLeaf ? [node] : <RTreeNode<T>>[])
      : (RTreeNode<T> node) => [node];
  return traverse(callback, condition: nodePredicate);
}