An open API service indexing awesome lists of open source software.

https://github.com/postor/double-linked-sorted-tree

double linked sorted tree
https://github.com/postor/double-linked-sorted-tree

Last synced: 2 months ago
JSON representation

double linked sorted tree

Awesome Lists containing this project

README

        

# double-linked-sorted-tree
double linked list + sorted tree | 双向链表 + 排序树

## feature | 特性

- keep order for added value | 保持添加的顺序
- log(n) add
- log(n) popMax/popMin

## usage | 使用

types

```
interface INode {
parent?: Node;
left?: Node;
right?: Node;
prev: Node;
next: Node;
value: number;
source?: T;
}

class DLSTree {
constructor();
add(value: number, source?: T): void;
remove(node: INode): void;
popMin(): INode | undefined;
popMax(): INode | undefined;
iterate(): Generator, void, unknown>;
getHead(): INode | undefined;
getTail(): INode | undefined;
getRoot(): INode | undefined;
size(): number;
updateNodeValue(node: INode, value: number): void;
}
```

code example
```
import DLSTree from 'double-linked-sorted-tree'

let arr = [100, 1, 11, 30, 10, 4]

let t = new DLSTree()
arr.forEach(x => t.add(x))

t.popMax().value // 100
t.popMax().value // 30

[...t.iterate()].map(x => x.value) //[1, 11, 10, 4]
```