Map a binary tree to a list (c version of mafintosh/flat-tree).
#include <libflattree.h>
int main(void)
{
printf("index: %ld\n", lft_index(3, 1));
printf("parent: %ld\n", lft_parent(5));
return 0;
}
Outputs:
index: 23
parent: 3
The functions below ending with a _2
takes a pre computed depth
parameter. Since calculating depth
is an iterative process, these functions are an optimization to avoid having to re-calculate depth
.
Returns an array index for the tree element at the given depth and offset.
Returns the depth of an element.
Returns the relative offset of an element.
As above but with pre computed depth.
Returns the index of this elements sibling.
As above but with pre computed depth.
Returns the index of the parent element.
As above but with pre computed depth.
Returns the index of the left child. Returns -1
if index
is even, i.e. if the element is a leaf.
As above but with pre computed depth.
Returns the index of the right child. Returns -1
if index
is even, i.e. if the element is a leaf.
As above but with pre computed depth.
Returns the left spanning index in the tree index
spans.
As above but with pre computed depth.
Returns the right spanning index in the tree index
spans.
As above but with pre computed depth.
Create an iterator starting at index
.
The lft_iterator*
is dynamically allocated so you need to call free()
when you're done using it.
Move the iterator to index
.
Returns 1
if the iterator is at a left sibling, otherwise 0
.
Returns 1
if the iterator is at a right sibling, otherwise 0
.
Move the iterator to the previous item in the tree. Returns current index
if offset
is 0
.
Move the iterator to the next item in the tree.
Move the iterator to the current sibling index.
Move the iterator to the current parent index.
Move the iterator to the current left span index.
Move the iterator to the current right span index.
Move the iterator to the current left child index.
Move the iterator to the current right child index.
- mafintosh/flat-tree: Original node module
- datrs/flat-tree: A port of the node module to rust
- bcomnes/flattree: A port of the node module to Go
MIT