flat-tree

WebJar for flat-tree

License

License

MIT
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

flat-tree
Last Version

Last Version

1.6.0
Release Date

Release Date

Type

Type

jar
Description

Description

flat-tree
WebJar for flat-tree
Project URL

Project URL

http://webjars.org
Source Code Management

Source Code Management

https://github.com/mafintosh/flat-tree

Download flat-tree

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/flat-tree/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>flat-tree</artifactId>
    <version>1.6.0</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/flat-tree/
implementation 'org.webjars.npm:flat-tree:1.6.0'
// https://jarcasting.com/artifacts/org.webjars.npm/flat-tree/
implementation ("org.webjars.npm:flat-tree:1.6.0")
'org.webjars.npm:flat-tree:jar:1.6.0'
<dependency org="org.webjars.npm" name="flat-tree" rev="1.6.0">
  <artifact name="flat-tree" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='flat-tree', version='1.6.0')
)
libraryDependencies += "org.webjars.npm" % "flat-tree" % "1.6.0"
[org.webjars.npm/flat-tree "1.6.0"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

flat-tree

A series of functions to map a binary tree to a list

npm install flat-tree

build status

Usage

You can represent a binary tree in a simple flat list using the following structure

      3
  1       5
0   2   4   6  ...

This module exposes a series of functions to help you build and maintain this data structure

var tree = require('flat-tree')
var list = []

var i = tree.index(0, 0) // get array index for depth: 0, offset: 0
var j = tree.index(1, 0) // get array index for depth: 1, offset: 0

// use these indexes to store some data

list[i] = 'a'
list[j] = 'b'
list[tree.parent(i)] = 'parent of a and b'

API

index = tree.index(depth, offset)

Returns an array index for the tree element at the given depth and offset

parentIndex = tree.parent(index)

Returns the index of the parent element in tree

siblingIndex = tree.sibling(index)

Returns the index of this elements sibling

children = tree.children(index)

Returns an array [leftChild, rightChild] with the indexes of this elements children. If this element does not have any children it returns null

range = tree.spans(index)

Returns the range (inclusive) the tree root at index spans. For example tree.spans(3) would return [0, 6] (see the usage example).

index = tree.leftSpan(index)

Returns the left spanning in index in the tree index spans.

index = tree.rightSpan(index)

Returns the right spanning in index in the tree index spans.

count = tree.count(index)

Returns how many nodes (including parent nodes) a tree contains

depth = tree.depth(index)

Returns the depth of an element

offset = tree.offset(index, [depth])

Returns the relative offset of an element

roots = tree.fullRoots(index)

Returns a list of all the full roots (subtrees where all nodes have either 2 or 0 children) < index. For example fullRoots(8) returns [3] since the subtree rooted at 3 spans 0 -> 6 and the tree rooted at 7 has a child located at 9 which is >= 8.

iterator = tree.iterator(index)

Create a stateful tree iterator starting at a given index. The iterator exposes the following methods.

index = iterator.next()

Move the iterator the next item in the tree.

index = iterator.prev()

Move the iterator the prev item in the tree.

iterator.seek(index)

Move the iterator the this specific tree index.

index = iterator.parent()

Move the iterator to the current parent index

index = iterator.leftChild()

Move the iterator to the current left child index.

index = iterator.rightChild()

Move the iterator to the current right child index.

index = iterator.leftSpan()

Move the iterator to the current left span index.

index = iterator.rightSpan()

Move the iterator to the current right span index.

bool = iterator.isLeft()

Is the iterator at a left sibling?

bool = iterator.isRight()

Is the iterator at a right sibling?

index = iterator.sibling()

Move the iterator to the current sibling

See also

License

MIT

Versions

Version
1.6.0