# TreeFold TreeFold[f,tree]

gives f[data,{res1,res2,}], where data is the data in tree and resi is the result of TreeFold[f,childi] for the ith child of tree.

TreeFold[{f,g},tree]

gives g[data] if tree is a leaf and f[data,{res1,res2,}] otherwise.

TreeFold[f,tree,h]

gives f[h[tree],{res1,res2,}], where resi is the result of TreeFold[f,childi,h] for the ith child of tree.

TreeFold[f]

represents an operator form of TreeFold that can be applied to a tree.

# Details # Examples

open allclose all

## Basic Examples(2)

Fold a function f on a tree:

Start by applying a separate function g on the tree leaves:

## Scope(6)

Fold a leaf:

Fold a tree with several levels:

Specify separate functions for the internal subtrees and the leaves:

Fold a property of subtrees:

Use the operator form of TreeFold on one argument:

Use the operator form of TreeFold on two arguments:

## Applications(8)

Get a nested list of the leaves of a tree:

Total the data in a tree:

Get a tree of subtotals, starting from the leaves:

Pass the current level as an additional argument:

Fold the tree:

Linearly fold the data starting from the root with an initial seed:

Fold the tree:

Get a tree of subtotals, starting from the root:

Compute the minimum level of leaves in a tree using TreeFold with this function:

Display an outline of a tree:

Get a list of US cities with populations over 100,000:

Construct a graph giving the hierarchical clustering of the cities according to their geodetic positions:

Convert the clustering hierarchy from a Graph object to a Tree object:

For each leaf, obtain the geodetic position of a city from its index in the hierarchical clustering graph:

For each subtree representing a cluster, give the tree containing the spatial median of its children:

Obtain a tree of geodetic positions by using the position of a city for each leaf and the spatial median of the positions for each cluster:

Show the edges in this tree of geodetic positions on a map of the United States:

Create a family tree:

Create an association giving the dates of birth:

Define a function that compares two people, giving the person who was younger when they had their first child, together with that child and their age when that child was born:

Define a function that compares two siblings, giving the older sibling together with their date of birth, in addition to the youngest first-time parent among their descendants:

Define a function that gives the youngest first-time parent among a person's descendants, given the results for their children:

Find the youngest first-time parent in the tree, together with their first child and their age when the child was born:

## Properties & Relations(5)

Lists can be thought of as vertical trees:

Fold[f,list] can be thought of as a TreeFold of a vertical tree:

TreeFold can be used to compute the maximum level of a tree:

TreeFold can be used to compute the size of a tree:

TreeFold can be used to convert a tree to nested rules:

TreeFold can be used to create an expression from the leaves of a tree: