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

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

    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 flattenedNodes. 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 Detail

      • childOffset

        int 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<TflattenedNodes()
        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