1.0.6 • Published 2 years ago

double-linked-sorted-tree v1.0.6

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

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<T = undefined> {
    parent?: Node<T>;
    left?: Node<T>;
    right?: Node<T>;
    prev: Node<T>;
    next: Node<T>;
    value: number;
    source?: T;
}

class DLSTree<T = undefined> {
    constructor();
    add(value: number, source?: T): void;
    remove(node: INode<T>): void;
    popMin(): INode<T> | undefined;
    popMax(): INode<T> | undefined;
    iterate(): Generator<Node<T>, void, unknown>;
    getHead(): INode<T> | undefined;
    getTail(): INode<T> | undefined;
    getRoot(): INode<T> | undefined;
    size(): number;
    updateNodeValue(node: INode<T>, 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]
1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago