This package uses binary trees to represent arrays of `N` elements
where `N` is fixed, unlike `library(arrays)`

. To load the
package, enter the query

| ?- use_module(library(trees)).

Binary trees have the following representation: `t`

denotes the
empty tree, and `t(`

denotes the
binary tree with label `Label`,`Left`,`Right`)`Label` and children `Left` and
`Right`.

`gen_label(`

`?Index`,`+Tree`,`?Label`)-
`Label`labels the`Index`-th element in the`Tree`. Can be used to enumerate all`Labels`by ascending`Index`. Use`get_label/3`

instead if`Index`is instantiated. `get_label(`

`+Index`,`+Tree`,`?Label`)-
`Label`labels the`Index`-th element in the`Tree`. `list_to_tree(`

`+List`,`-Tree`)-
Constructs a binary
`Tree`from`List`where`get_label(`

iff`K`,`Tree`,`Lab`)`Lab`is the`K`th element of`List`. `map_tree(`

`:Pred`,`?OldTree`,`?NewTree`)-
`OldTree`and`NewTree`are binary trees of the same shape and`Pred(Old,New)`is true for corresponding elements of the two trees. `put_label(`

`+I`,`+OldTree`,`+Label`,`-NewTree`)-
Constructs
`NewTree`which has the same shape and elements as`OldTree`, except that the`I`-th element is`Label`. `put_label(`

`+I`,`+OldTree`,`+Label`,`-NewTree`,`+Label`)-
Constructs
`NewTree`which has the same shape and elements as`OldTree`, except that the`I`-th element is changed from`OldLabel`to`NewLabel`. `tree_size(`

`+Tree`,`?Size`)-
Calculates as
`Size`the number of elements in the`Tree`. `tree_to_list(`

`+Tree`,`?List`)-
Is the converse operation to
`list_to_tree/2`

. Any mapping or checking operation can be done by converting the tree to a list, mapping or checking the list, and converting the result, if any, back to a tree.

Go to the first, previous, next, last section, table of contents.