TreeSet
data-structure-typed / TreeSet
Class: TreeSet<K, R>
Defined in: data-structures/binary-tree/tree-set.ts:26
An ordered Set backed by a red-black tree.
- Iteration order is ascending by key.
- No node exposure: all APIs use keys only.
Example
// Set multiple key-value pairs
const ts = new TreeSet<number, string>();
ts.setMany([[1, 'a'], [2, 'b'], [3, 'c']]);
console.log(ts.size); // 3;
Type Parameters
K
K = any
R
R = K
Implements
Iterable<K>
Constructors
Constructor
new TreeSet<K, R>(elements?, options?): TreeSet<K, R>;
Defined in: data-structures/binary-tree/tree-set.ts:46
Create a TreeSet from an iterable of keys or raw elements.
Parameters
elements?
Iterable<K, any, any> | Iterable<R, any, any>
Iterable of keys, or raw elements if toElementFn is provided.
options?
TreeSetOptions<K, R> = {}
Configuration options including optional toElementFn to transform raw elements.
Returns
TreeSet<K, R>
Throws
When using the default comparator and encountering unsupported key types,
or invalid keys (e.g. NaN, invalid Date).
Example
// Standard usage with keys
const set = new TreeSet([3, 1, 2]);
// Using toElementFn to transform raw objects
const users = [{ id: 3, name: 'Alice' }, { id: 1, name: 'Bob' }];
const set = new TreeSet<number, User>(users, { toElementFn: u => u.id });
Accessors
size
Get Signature
get size(): number;
Defined in: data-structures/binary-tree/tree-set.ts:101
Number of elements in the set.
Returns
number
Methods
add()
add(key): this;
Defined in: data-structures/binary-tree/tree-set.ts:458
Add a key to the set (no-op if already present).
Parameters
key
K
Returns
this
Remarks
Expected time O(log n)
Example
// Unique tags with sorted order
const tags = new TreeSet<string>(['javascript', 'typescript', 'react', 'typescript', 'node']);
// Duplicates removed, sorted alphabetically
console.log([...tags]); // ['javascript', 'node', 'react', 'typescript'];
console.log(tags.size); // 4;
tags.add('angular');
console.log(tags.first()); // 'angular';
console.log(tags.last()); // 'typescript';
ceiling()
ceiling(key): K | undefined;
Defined in: data-structures/binary-tree/tree-set.ts:3390
Smallest key that is >= the given key.
Parameters
key
K
Returns
K | undefined
Example
// Finding nearest available time slot
// Available appointment times (minutes from midnight)
const slots = new TreeSet<number>([540, 600, 660, 720, 840, 900]);
// Customer wants something around 10:30 (630 min)
const nearest = slots.ceiling(630);
console.log(nearest); // 660; // 11:00 AM
// What's the latest slot before 2:00 PM (840)?
const before2pm = slots.lower(840);
console.log(before2pm); // 720; // 12:00 PM
// Book the 11:00 slot
slots.delete(660);
console.log(slots.ceiling(630)); // 720;
clear()
clear(): void;
Defined in: data-structures/binary-tree/tree-set.ts:987
Remove all keys.
Returns
void
Example
// Remove all
const ts = new TreeSet<number>([1, 2]);
ts.clear();
console.log(ts.isEmpty()); // true;
clone()
clone(): TreeSet<K>;
Defined in: data-structures/binary-tree/tree-set.ts:4167
Creates a shallow clone of this set.
Returns
TreeSet<K>
Remarks
Time O(n log n), Space O(n)
Example
// Deep clone
const ts = new TreeSet<number>([1, 2, 3]);
const copy = ts.clone();
copy.delete(1);
console.log(ts.has(1)); // true;
delete()
delete(key): boolean;
Defined in: data-structures/binary-tree/tree-set.ts:820
Delete a key.
Parameters
key
K
Returns
boolean
true if the key existed; otherwise false.
Remarks
Expected time O(log n)
Example
// Removing elements while maintaining order
const nums = new TreeSet<number>([1, 3, 5, 7, 9]);
console.log(nums.delete(5)); // true;
console.log(nums.delete(5)); // false; // already gone
console.log([...nums]); // [1, 3, 7, 9];
entries()
entries(): IterableIterator<[K, K]>;
Defined in: data-structures/binary-tree/tree-set.ts:1483
Iterate over [value, value] pairs (native Set convention).
Note: TreeSet stores only keys internally; [k, k] is created on-the-fly during iteration.
Returns
IterableIterator<[K, K]>
Example
// Iterate entries
const ts = new TreeSet<number>([3, 1, 2]);
console.log([...ts.entries()].map(([k]) => k)); // [1, 2, 3];
every()
every(callbackfn, thisArg?): boolean;
Defined in: data-structures/binary-tree/tree-set.ts:2341
Test whether all values satisfy a predicate.
Parameters
callbackfn
TreeSetElementCallback<K, boolean, TreeSet<K, K>>
thisArg?
unknown
Returns
boolean
Remarks
Time O(n), Space O(1)
Example
// Test all
const ts = new TreeSet<number>([2, 4, 6]);
console.log(ts.every(k => k > 0)); // true;
filter()
filter(callbackfn, thisArg?): TreeSet<K>;
Defined in: data-structures/binary-tree/tree-set.ts:2001
Create a new TreeSet containing only values that satisfy the predicate.
Parameters
callbackfn
TreeSetElementCallback<K, boolean, TreeSet<K, K>>
thisArg?
unknown
Returns
TreeSet<K>
Remarks
Time O(n log n) expected, Space O(n)
Example
// Filter
const ts = new TreeSet<number>([1, 2, 3, 4, 5]);
const evens = ts.filter(k => k % 2 === 0);
console.log([...evens]); // [2, 4];
find()
find(callbackfn, thisArg?): K | undefined;
Defined in: data-structures/binary-tree/tree-set.ts:2682
Find the first value that satisfies a predicate.
Parameters
callbackfn
TreeSetElementCallback<K, boolean, TreeSet<K, K>>
thisArg?
unknown
Returns
K | undefined
Remarks
Time O(n), Space O(1)
Example
// Find entry
const ts = new TreeSet<number>([1, 2, 3]);
const found = ts.find(k => k === 2);
console.log(found); // 2;
first()
first(): K | undefined;
Defined in: data-structures/binary-tree/tree-set.ts:3090
Smallest key in the set.
Returns
K | undefined
Example
// Student grade ranking with custom comparator
interface Student {
name: string;
gpa: number;
}
const ranking = new TreeSet<Student>(
[
{ name: 'Alice', gpa: 3.8 },
{ name: 'Bob', gpa: 3.5 },
{ name: 'Charlie', gpa: 3.9 },
{ name: 'Diana', gpa: 3.5 }
],
{ comparator: (a, b) => b.gpa - a.gpa || a.name.localeCompare(b.name) }
);
// Sorted by GPA descending, then name ascending
const names = [...ranking].map(s => s.name);
console.log(names); // ['Charlie', 'Alice', 'Bob', 'Diana'];
// Top student
console.log(ranking.first()?.name); // 'Charlie';
// Filter students with GPA >= 3.8
const honors = ranking.filter(s => s.gpa >= 3.8);
console.log(honors.toArray().map(s => s.name)); // ['Charlie', 'Alice'];
floor()
floor(key): K | undefined;
Defined in: data-structures/binary-tree/tree-set.ts:3536
Largest key that is <= the given key.
Parameters
key
K
Returns
K | undefined
Example
// Largest element ≤ target
const breakpoints = new TreeSet<number>([320, 768, 1024, 1280, 1920]);
// Current width is 800 → which breakpoint applies?
console.log(breakpoints.floor(800)); // 768;
console.log(breakpoints.floor(1024)); // 1024; // exact match
console.log(breakpoints.floor(100)); // undefined;
forEach()
forEach(cb, thisArg?): void;
Defined in: data-structures/binary-tree/tree-set.ts:1655
Visit each value in ascending order.
Callback follows native Set convention: (value, value2, set).
Parameters
cb
(value, value2, set) => void
thisArg?
unknown
Returns
void
Example
// Execute for each
const ts = new TreeSet<number>([3, 1, 2]);
const keys: number[] = [];
ts.forEach(k => keys.push(k));
console.log(keys); // [1, 2, 3];
has()
has(key): boolean;
Defined in: data-structures/binary-tree/tree-set.ts:639
Test whether a key exists.
Parameters
key
K
Returns
boolean
Remarks
Expected time O(log n)
Example
// Checking membership in a sorted collection
const allowed = new TreeSet<string>(['admin', 'editor', 'viewer']);
console.log(allowed.has('admin')); // true;
console.log(allowed.has('guest')); // false;
higher()
higher(key): K | undefined;
Defined in: data-structures/binary-tree/tree-set.ts:3680
Smallest key that is > the given key.
Parameters
key
K
Returns
K | undefined
Example
// Smallest element strictly > target
const levels = new TreeSet<number>([1, 5, 10, 25, 50, 100]);
console.log(levels.higher(10)); // 25;
console.log(levels.higher(100)); // undefined;
isEmpty()
isEmpty(): boolean;
Defined in: data-structures/binary-tree/tree-set.ts:264
Whether the set is empty.
Returns
boolean
Example
// Check empty
console.log(new TreeSet().isEmpty()); // true;
keys()
keys(): IterableIterator<K>;
Defined in: data-structures/binary-tree/tree-set.ts:1151
Iterate over keys in ascending order.
Returns
IterableIterator<K>
Example
// Get sorted keys
const ts = new TreeSet<number>([30, 10, 20]);
console.log([...ts.keys()]); // [10, 20, 30];
last()
last(): K | undefined;
Defined in: data-structures/binary-tree/tree-set.ts:3136
Largest key in the set.
Returns
K | undefined
Example
// Get the maximum element
const temps = new TreeSet<number>([18, 22, 15, 30, 25]);
console.log(temps.last()); // 30;
console.log(temps.first()); // 15;
lower()
lower(key): K | undefined;
Defined in: data-structures/binary-tree/tree-set.ts:3824
Largest key that is < the given key.
Parameters
key
K
Returns
K | undefined
Example
// Largest element strictly < target
const tiers = new TreeSet<number>([100, 200, 500, 1000]);
console.log(tiers.lower(500)); // 200;
console.log(tiers.lower(100)); // undefined;
map()
map<MK>(
callbackfn,
options?,
thisArg?): TreeSet<MK>;
Defined in: data-structures/binary-tree/tree-set.ts:1823
Create a new TreeSet by mapping each value to a new key.
This mirrors RedBlackTree.map: mapping produces a new ordered container.
Type Parameters
MK
MK
Parameters
callbackfn
TreeSetElementCallback<K, MK, TreeSet<K, K>>
options?
Omit<TreeSetOptions<MK, MK>, "toElementFn"> & object = {}
thisArg?
unknown
Returns
TreeSet<MK>
Remarks
Time O(n log n) expected, Space O(n)
Example
// Transform
const ts = new TreeSet<number>([1, 2, 3]);
const doubled = ts.map(k => k * 2);
console.log([...doubled]); // [2, 4, 6];
pollFirst()
pollFirst(): K | undefined;
Defined in: data-structures/binary-tree/tree-set.ts:3184
Remove and return the smallest key.
Returns
K | undefined
Example
// Remove and return minimum
const queue = new TreeSet<number>([5, 1, 8, 3]);
console.log(queue.pollFirst()); // 1;
console.log(queue.pollFirst()); // 3;
console.log(queue.size); // 2;
pollLast()
pollLast(): K | undefined;
Defined in: data-structures/binary-tree/tree-set.ts:3234
Remove and return the largest key.
Returns
K | undefined
Example
// Remove and return maximum
const stack = new TreeSet<number>([10, 20, 30]);
console.log(stack.pollLast()); // 30;
console.log(stack.size); // 2;
print()
print(): void;
Defined in: data-structures/binary-tree/tree-set.ts:3019
Print a human-friendly representation.
Returns
void
Remarks
Time O(n), Space O(n)
Example
// Display tree
const ts = new TreeSet<number>([1, 2, 3]);
expect(() => ts.print()).not.toThrow();
rangeSearch()
rangeSearch(range, options?): K[];
Defined in: data-structures/binary-tree/tree-set.ts:3982
Return all keys in a given range.
Parameters
range
[K, K]
[low, high]
options?
TreeSetRangeOptions = {}
Inclusive/exclusive bounds (defaults to inclusive).
Returns
K[]
Example
// IP address blocklist with range checking
// Simplified: use numeric IP representation
const blocklist = new TreeSet<number>([
167772160, // 10.0.0.0
167772416, // 10.0.1.0
167772672, // 10.0.2.0
167773184 // 10.0.4.0
]);
// Check if any blocked IP is in range 10.0.1.0 - 10.0.3.0
const inRange = blocklist.rangeSearch([167772416, 167772928]);
console.log(inRange); // [167772416, 167772672];
// Quick membership check
console.log(blocklist.has(167772416)); // true;
console.log(blocklist.has(167772800)); // false;
reduce()
reduce<A>(callbackfn, initialValue): A;
Defined in: data-structures/binary-tree/tree-set.ts:2175
Reduce values into a single accumulator.
Type Parameters
A
A
Parameters
callbackfn
TreeSetReduceCallback<K, A, TreeSet<K, K>>
initialValue
A
Returns
A
Remarks
Time O(n), Space O(1)
Example
// Aggregate
const ts = new TreeSet<number>([1, 2, 3]);
const sum = ts.reduce((acc, k) => acc + k, 0);
console.log(sum); // 6;
some()
some(callbackfn, thisArg?): boolean;
Defined in: data-structures/binary-tree/tree-set.ts:2511
Test whether any value satisfies a predicate.
Parameters
callbackfn
TreeSetElementCallback<K, boolean, TreeSet<K, K>>
thisArg?
unknown
Returns
boolean
Remarks
Time O(n), Space O(1)
Example
// Test any
const ts = new TreeSet<number>([1, 3, 5]);
console.log(ts.some(k => k === 3)); // true;
toArray()
toArray(): K[];
Defined in: data-structures/binary-tree/tree-set.ts:2854
Materialize the set into an array of keys.
Returns
K[]
Remarks
Time O(n), Space O(n)
Example
// Convert to array
const ts = new TreeSet<number>([3, 1, 2]);
console.log(ts.toArray()); // [1, 2, 3];
values()
values(): IterableIterator<K>;
Defined in: data-structures/binary-tree/tree-set.ts:1317
Iterate over values in ascending order.
Note: for Set-like containers, values() is the same as keys().
Returns
IterableIterator<K>
Example
// Get values (same as keys for Set)
const ts = new TreeSet<number>([2, 1, 3]);
console.log([...ts.values()]); // [1, 2, 3];
createDefaultComparator()
static createDefaultComparator<K>(): Comparator<K>;
Defined in: data-structures/binary-tree/tree-set.ts:71
Create the strict default comparator.
Supports:
number(rejectsNaN; treats-0and0as equal)stringDate(orders bygetTime(), rejects invalid dates)
For other key types, a custom comparator must be provided.
Type Parameters
K
K
Returns
Comparator<K>