@cosmicmind/algojs
Version:
A TypeScript library featuring algorithms and data structures.
29 lines • 2.22 kB
TypeScript
import { Stackable, stackDepth, Listable, List } from '.';
export type Tree = Listable & Stackable & {
parent?: Tree;
next?: Tree;
previous?: Tree;
children: List<Tree>;
size: number;
};
export declare const TreeCompareFn: <T extends Tree>(a: T, b: T) => number;
export declare const treeCreate: <T extends Tree>(props?: Omit<T, keyof Tree>) => T;
export declare function treeInsertChild<T extends Tree>(parent: T, node: T): void;
export declare function treeInsertChildBefore<T extends Tree>(parent: T, node: T, before: T, compare?: (a: T, b: T) => number): void;
export declare function treeInsertChildAfter<T extends Tree>(parent: T, node: T, after: T, compare?: (a: T, b: T) => number): void;
export declare function treeAppendChild<T extends Tree>(parent: T, node: T): void;
export declare function treeRemove<T extends Tree>(node: T, compare?: (a: T, b: T) => number): void;
export declare const treeDepth: <T extends Tree>(root: T) => ReturnType<typeof stackDepth>;
export declare function treeIsRoot<T extends Tree>(node: T): boolean;
export declare function treeIsLeaf<T extends Tree>(node: T): boolean;
export declare function treeIsChild<T extends Tree>(parent: T, node: T, compare?: (a: T, b: T) => number): boolean;
export declare function treeIsFirstChild<T extends Tree>(parent: T, node: T, compare?: (a: T, b: T) => number): boolean;
export declare function treeIsLastChild<T extends Tree>(parent: T, node: T, compare?: (a: T, b: T) => number): boolean;
export declare function treeIsOnlyChild<T extends Tree>(parent: T, node: T, compare?: (a: T, b: T) => number): boolean;
export declare function treeIsChildDeep<T extends Tree>(parent: T, node: T, compare?: (a: T, b: T) => number): boolean;
export declare function treeIncreaseSize<T extends Tree>(root: T, size: number): void;
export declare function treeDecreaseSize<T extends Tree>(root: T, size: number): void;
export declare function depthFirstIterator<T extends Tree>(root: T): IterableIterator<T>;
export declare function breadthFirstIterator<T extends Tree>(root: T): IterableIterator<T>;
export declare function treeQuery<T extends Tree>(root: T, ...fn: ((node: T) => boolean)[]): Set<T>;
//# sourceMappingURL=Tree.d.ts.map