Interface FlatTree<V,T extends FlatTree<V,T>>

All Superinterfaces:
Iterable<T>, Self<T>, Tree<V,T>
All Known Subinterfaces:
TreeGene<A,G>
All Known Implementing Classes:
AbstractTreeGene, FlatTreeNode, ProgramGene

public interface FlatTree<V,T extends FlatTree<V,T>> extends Tree<V,T>
Tree specification, where the nodes of the whole tree are stored in an array. The tree
 0
 ├── 1
 │   ├── 4
 │   └── 5
 ├── 2
 │   └── 6
 └── 3
     ├── 7
     │   ├── 10
     │   └── 11
     ├── 8
     └── 9
 
will be stored in breadth-first order and will look like this:
 ┌─┬─┬─┐       ┌──────┬──┐
 0 1 2 3 4 5 6 7 8 9 10 11
   └─│─│─┴─┘ │ │ │ │
     └─│─────┘ │ │ │
       └───────┴─┴─┘
 
The child nodes are always stored on the right side of the parent flattened Nodes. So you have to read the tree from left to right. All children of a parent node are stored continuously after the childOffset and are defined by the sub-array [childOffset, childOffset + childCount).
Since:
3.9
Version:
3.9
  • Method Details

    • childOffset

      Return the index of the first child node in the underlying node array. -1 is returned if this node is a leaf.
      Returns:
      Return the index of the first child node in the underlying node array, or -1 if this node is a leaf
    • flattenedNodes

      default ISeq<T> flattenedNodes()
      Return the whole flattened tree values in breadth-first order. This is equivalent to
      final ISeq<T> seq = getRoot().breadthFirstStream()
          .collect(ISeq.toISeq());
      
      Returns:
      the flattened tree values in breadth-first order