Expand description
Series of functions to map a binary tree to a list
You can represent a binary tree in a simple flat list using the following structure:
15
7 23
3 11 19 27
1 5 9 13 17 21 25 29
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30...
Each number represents an index in a flat list. So a tree:
A
B C
D E F G ...
would be represented as a list: [D B E A F C G]
Furthermore, indexes 0
, 2
, 4
, 6
are on depth 0
. 1
, 5
, 9
on depth 1
. And so forth.
depth = 2 ^ 3
depth = 1 | 1 5
depth = 0 | 0 2 4 6 ...
In some cases it is also useful to calculate an offset. Indexes 0
, 1
, 3
, 7
have an offset 0
:
(7)
(3)
(1) 5
(0) 2 4 6 ...
2
, 5
, 11
, 23
offset 1
:
7
3 (11)
1 (5) 9 13
0 (2) 4 6 8 10 12 14
This module exposes a series of functions to help you build and maintain this data structure.
Structs
- Iterator over a flat-tree.
Functions
- Returns both children of a node.
- Returns how many nodes are in the tree that the node spans.
- Returns how many leaves are in the tree that the node spans.
- Returns the depth of a node.
- Returns a list of all the full roots (subtrees where all nodes have either 2 or 0 children)
<
index. - Returns the flat-tree of the tree node at the specified depth and offset.
- Returns only the left child of a node.
- Returns the left most node in the tree that it spans.
- Returns the offset of a node.
- Returns the parent of a node with a depth.
- Returns only the left child of a node.
- Returns the right most node in the tree that the node spans.
- Returns the sibling of a node.
- Returns the left and right most nodes in the tree that the node spans.
- Returns the parent’s sibling, of a node.