higlass
Version:
HiGlass Hi-C / genomic / large data viewer
110 lines (109 loc) • 2.96 kB
TypeScript
/**
* Interval tree.
*
* @public
* @constructor
*/
export class IntervalTree {
/**
* Root node of the tree.
* @type {IntervalTreeNode | null}
*/
root: IntervalTreeNode | null;
/**
* Add new interval to the tree.
*
* @public
* @param {Interval} interval - Array with start and end points of the interval.
*/
public add(interval: Interval): void;
/**
* Checks or point belongs to at least one intarval from the tree.<br><br>
* Complexity: O(log N).
*
* @public
* @method
* @param {Number} point Point which should be checked.
* @return {Boolean} True if point belongs to one of the intervals.
*/
public contains(point: number): boolean;
/**
* Checks or interval belongs to at least one intarval from the tree.<br><br>
* Complexity: O(log N).
*
* @public
* @method
* @param {Interval} interval Interval which should be checked.
* @return {boolean} True if interval intersects with one of the intervals.
*/
public intersects(interval: Interval): boolean;
/**
* Returns height of the tree.
*
* @public
* @method
* @return {Number} Height of the tree.
*/
public height(): number;
/**
* Returns node with the max endpoint in subtree.
*
* @public
* @method
* @param {IntervalTreeNode} node Root node of subtree.
* @return {IntervalTreeNode | null} IntervalTreeNode with the largest endpoint.
*/
public findMax(node: IntervalTreeNode): IntervalTreeNode | null;
/**
* Adjust the max value.
*
* @param {Interval} interval
* @param {IntervalTreeNode | null} node
*/
_removeHelper(interval: Interval, node: IntervalTreeNode | null): void;
/**
* Remove interval from the tree.
*
* @public
* @method
* @param {Interval} interval - Array with start and end of the interval.
*/
public remove(interval: Interval): void;
}
export type Interval = [start: number, end: number];
/** @typedef {[start: number, end: number]} Interval */
declare class IntervalTreeNode {
/**
* @param {number} start
* @param {number} end
* @param {IntervalTreeNode} [left]
* @param {IntervalTreeNode} [right]
*/
constructor(start: number, end: number, left?: IntervalTreeNode, right?: IntervalTreeNode);
/**
* Node interval.
* @type {Interval}
*/
interval: Interval;
/**
* Max endpoint in subtree which starts from this node.
* @type {number}
*/
max: number;
/**
* Parent node.
* @type {IntervalTreeNode | null}
*/
parentNode: IntervalTreeNode | null;
/**
* Left child node.
* @type {IntervalTreeNode | null}
*/
left: IntervalTreeNode | null;
/**
* Right child node.
* @type {IntervalTreeNode | null}
*/
right: IntervalTreeNode | null;
}
export {};