Skip to main content
RedBlackTree is a self-balancing binary search tree for ordered key-value mappings.

Type Definition

interface RedBlackTree<K, V> extends Iterable<[K, V]>

Constructors

empty

Creates an empty RedBlackTree.
const empty: <K, V>(ord: Order<K>) => RedBlackTree<K, V>

make

Creates a RedBlackTree with the given ordering.
const make: <K>(ord: Order<K>) => <Entries extends ReadonlyArray<readonly [K, any]>>(...entries: Entries) => RedBlackTree<K, Entries[number][1]>

Operations

insert

Inserts a key-value pair.
const insert: <K, V>(key: K, value: V) => (self: RedBlackTree<K, V>) => RedBlackTree<K, V>

getOption

Retrieves a value by key.
const getOption: <K>(key: K) => <V>(self: RedBlackTree<K, V>) => Option<V>

removeFirst

Removes the minimum element.
const removeFirst: <K, V>(self: RedBlackTree<K, V>) => RedBlackTree<K, V>

Example

import { RedBlackTree, Order } from "effect"

const tree = RedBlackTree.make(Order.number)([1, "a"], [2, "b"]).pipe(
  RedBlackTree.insert(3, "c")
)

console.log(RedBlackTree.getOption(tree, 2)) // Some("b")

Build docs developers (and LLMs) love