(((name . "wb-tree-node?") (signature lambda (x) => boolean?) (desc "Returns true if `x` is a node in a weight-balanced tree.")) ((name . "non-null-wb-tree-node?") (signature lambda (x) => boolean?) (desc "Returns true if `x` is a node with data and children.")) ((name . "get-data") (signature lambda ((non-null-wb-tree-node? x)) => *) (desc "Returns the data in the tree node.")) ((name . "get-left") (signature lambda ((non-null-wb-tree-node? x)) => wb-tree-node?) (desc "Returns the left child in the node.")) ((name . "get-right") (signature lambda ((non-null-wb-tree-node? x)) => wb-tree-node?) (desc "Returns the right child in the node.")) ((name . "get-size") (signature lambda ((wb-tree-node? x)) => integer?) (desc "Returns the number of elements in this tree.")) ((name . "balanced?") (signature lambda ((wb-tree-node? x)) => boolean?) (desc "Recursively traverses `x` and checks if it is weight balanced.")) ((name . "in-order-vector->node") (signature lambda ((vector? x)) => wb-tree-node?) (desc " * It is an error if `x` is not in order. Returns a weight-balanced tree where the elements of the tree are the elements of `x`.")) ((name . "node->in-order-list") (signature lambda ((wb-tree-node? x)) => list?) (desc "Returns a list of all elements of `x` in order.")) ((name . "join") (signature lambda (data (wb-tree-node? left) (wb-tree-node? right)) => non-null-wb-tree-node?) (desc " * It is an error if `left` or `right` are not balanced. * It is an error if any element of `left` is greater than or equal to any element in `right`. * It is an error if `data` is less than or equal to any element in `left`. * It is an error if `data` is greater than or equal to any element in `right`. Returns a balanced tree containing all elements of `left` and `right` with `data`.")) ((name . "join2") (signature lambda ((wb-tree-node? left) (wb-tree-node? right)) => wb-tree-node?) (desc " * It is an error if any element in `left` is greater than or equal to any element in `right`. Returns a new tree with the elements of `left` and `right`.")) ((name . "split") (signature lambda ((comparator? cmp) (wb-tree-node? tree) key (procedure? default)) => (values wb-tree-node? * wb-tree-node?)) " * It is an error if any element of `tree` is not comparable by `cmp`. * It is an error if `key` is not comparable by `cmp`. * It is an error if `cmp` does not have an order. * It is an error if `default` is not a thunk. Returns two trees, one of all values to the left of `key`, and one with all values to the right of `key`. If a value that compares equal to `key` is found, that value is returned. Otherwise the result of calling `default` with no arguments is returned.") ((name . "search") (signature case-lambda ((((wb-tree-node? tree) (comparator? cmp) key) *) (((wb-tree-node? tree) (comparator? cmp) key (procedure? default)) *))) (desc " * It is an error if `cmp` does not order `key` and all elements in `tree`. * It is an error if `default` is not a thunk. Searches `tree` for `key` using `cmp`. If a node contains data that compares equal to `key`, return that data. Otherwise, tail call `default.` If `default` is not supplied, the function returns `#f`.")))