GeneralTree
A tree in which element can have either zero or many children. This structure is link-based.
length
/**
* Number of elements in the tree.
*
* @readonly
*/
get length(): number
addChild()
/**
* Adds child element to parent element at the specified position.
*
* @param position Position of the parent element.
* @param element Element to add.
* @returns Position of the added element.
*/
addChild(position: Position<T, Node<T>>, element: T): Position<T, Node<T>>
addRoot()
/**
* Adds the specified element at the root of the tree. Throws an error if the tree is not empty.
*
* @param element Element to add.
* @returns Position of the added element.
*/
addRoot(element: T): Position<T, Node<T>>
areEqual()
/**
* Checks whether the specified positions are of the same element.
*
* @param a Position in the tree.
* @param b Position in the tree.
* @returns TRUE if the positions are the same, FALSE otherwise.
*/
areEqual(a: P, b: P): boolean
attach()
/**
* Attaches element structures of the listed trees to the specified parent element.
*
* @param position Position of the parent element.
* @param trees List of trees.
*/
attach(position: Position<T, Node<T>>, ...trees: this[])
clear()
/**
* Clears the tree. If instant set TRUE it takes O(1) time but does not deprecate the existing positions.
*
* @param instant TRUE to deprecate all existing positions, FALSE to skip deprecation (client code cares of it).
*/
clear(instant = false)
getChildren()
/**
* Gets iteration of children of the specified position in the tree.
*
* @param position Position in the tree.
* @returns Iterable iterator of positions.
*/
getChildren(position: P): IterableIterator<P>
getNumChildren()
/**
* Gets count of children of the specified position in the tree.
*
* @param position Position in the tree.
* @returns Number of children. Zero if position is of a leaf element.
*/
getNumChildren(position: P): number
getDepth()
/**
* Gets number of levels separating the specified position from the root.
*
* @param position Position in the tree. No position to get the depth of the tree.
* @returns Number of levels.
*/
getDepth(position: P): number
getHeight()
/**
* Gets the maximum number of levels separating the specified position from the tree's leaves.
*
* @param position Position in the tree. No position to get the height of the tree.
* @returns Number of levels.
*/
getHeight(position?: P): number
getParent()
/**
* Gets parent of the specified position in the tree.
*
* @param position Position in the tree.
* @returns Position or undefined if the specified position is of the root.
*/
getParent(position: P): P | undefined
getRoot()
/**
* Gets position of the root element of the tree.
*
* @returns Position of the root element.
*/
getRoot(): P | undefined
isEmpty()
/**
* Checks whether the tree is empty or not.
*
* @returns TRUE if the tree is empty, FALSE otherwise.
*/
isEmpty(): boolean
isLeaf()
/**
* Checks whether the specified position is of a leaf element in the tree.
*
* @param position Position in the tree.
* @returns TRUE if the position's element is leaf, FALSE otherwise.
*/
isLeaf(position: P): boolean
isRoot()
/**
* Checks whether the specified position is of the root element in the tree.
*
* @param position Position in the tree.
* @returns TRUE if the position's element is root, FALSE otherwise.
*/
isRoot(position: P): boolean
remove()
/**
* Removes element from the tree by position and returns it. Throws an error if the position is not valid
* or has more than one child.
*
* @param position Position of the element.
* @returns Removed element.
*/
remove(position: Position<T, Node<T>>): T
replace()
/**
* Replaces element at the specified position.
*
* @param position Position of the element.
* @param element Element to replace the existing with.
* @returns Replaced element.
*/
replace(position: Position<T, Node<T>>, element: T): T
traverse()
/**
* Accepts traversal to traverse through the elements of the tree.
*
* @param traversal Tree traversal algorithm.
*/
traverse<R, M extends ITraversalMetadata>(traversal: TreeTraversalAbstract<T, R, this, M>): R
Last updated
Was this helpful?