TreeMap

TreeMap[f,tree]

applies f to the data of each subtree of tree.

TreeMap[f,tree,levelspec]

applies f to the data of subtrees on levels of tree specified by levelspec.

TreeMap[f,tree,levelspecelems]

applies f to the elements elems of subtrees on levels specified by levelspec.

TreeMap[f]

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

Details

  • TreeMap allows a function to be applied to elements of subtrees on any range of levels in a Tree object. The function can be applied to the subtrees in many orders, including depth-first and breadth-first traversals.
  • Structural elements elem for levelspecelem include:
  • "Data"the data of the subtree
    "Children"the children of the subtree
    "Subtree"the subtree itself
    "ChildrenData"the data of the children
  • Additional elements include:
  • "OriginalData"the original data of the subtree
    "OriginalChildren"the original children of the subtree
    "OriginalSubtree"the original subtree
    "OriginalChildrenData"the original data of the children
    "Position"the position of the subtree
    "Index"the index of the subtree in the list of siblings
    "LevelPair"the non-negative and negative levels of the subtree
    "Level"the non-negative level of the subtree from the root
    "NegativeLevel"the negative level of the subtree from the leaves
  • TreeMap uses standard level specifications as in TreeLevel:
  • nlevels 1 through n
    Infinitylevels 1 through Infinity
    {n}level n only
    {n1,n2}levels n1 through n2
    Alllevels 0 through Infinity
    "Leaves"level -1 only
    "NonLeaves"levels 0 through -2
  • The default value for levelspec in TreeMap is {0,Infinity}.
  • TreeMap traverses subtrees in a left-to-right, depth-first order, with children visited before their parents.
  • TreeMap[,TreeTraversalOrderorder] allows visiting subtrees in different orders, such as depth-first and breadth-first traversals.
  • TreeMap[f][tree] is equivalent to TreeMap[f,tree].

Examples

open allclose all

Basic Examples  (5)

Map f at the data of a tree:

Map f on the specified levels:

Map f at the subtrees of a tree:

Supply the position as an additional argument:

Use the operator form of TreeMap:

Scope  (12)

Level Specifications  (5)

Map on all levels (default):

Map on levels 1 through 2:

Map only on level 2:

Map on levels 0 through 2:

Map on all levels, starting at level 1:

Map also on level 0:

Negative levels:

Positive and negative levels can be mixed:

Map on the leaves:

Map on the non-leaves:

Elements  (7)

Map at the data (default):

Map at the original data:

Map at the subtrees:

Map at the original subtrees:

Map at the children:

Map at the original children:

Map at the data of the children:

Map at the original data of the children:

Supply the position as an additional argument:

Supply the index rather than the position:

Supply the level specifications as an additional argument:

Supply the level rather than both level specifications:

Supply the negative level rather than both level specifications:

Supply a sequence of elements as arguments:

Options  (3)

TreeTraversalOrder  (3)

By default, subtrees are visited in a depth-first order, with parents visited after their children:

Specify a top-down, right-to-left variant:

Visit subtrees in a breadth-first order, with nodes on the same level from the root visited before the nodes on the next level:

Visit subtrees in a leaves-first order, with nodes on the same level from the leaves visited before the nodes on the next level:

Properties & Relations  (6)

Children are visited before their parents:

TreeScan does the same as TreeMap but without returning a result:

TreeMap[f,tree,levelspec] is equivalent to TreeMapAt[f,tree,TreeLevel[levelspec]]:

Construct a tree from the heads in an expression:

TreeMap maps on the data of subtrees in a tree:

This corresponds to mapping on the heads and leaves in an expression:

Map can map on the heads and leaves directly:

Construct a tree from the atoms in an expression:

TreeMap can map on the data of just the leaves in a tree:

This corresponds to mapping on the atoms in an expression:

Map can map on the atoms in an expression directly:

TreeFold applies a function to the data and results for the children:

TreeMap can compute the same result:

The new data of the root is the result of TreeFold:

Possible Issues  (1)

TreeMap by default starts at level 1, so does not apply the function to the whole tree:

Wolfram Research (2021), TreeMap, Wolfram Language function, https://reference.wolfram.com/language/ref/TreeMap.html (updated 2022).

Text

Wolfram Research (2021), TreeMap, Wolfram Language function, https://reference.wolfram.com/language/ref/TreeMap.html (updated 2022).

CMS

Wolfram Language. 2021. "TreeMap." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/ref/TreeMap.html.

APA

Wolfram Language. (2021). TreeMap. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TreeMap.html

BibTeX

@misc{reference.wolfram_2022_treemap, author="Wolfram Research", title="{TreeMap}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/TreeMap.html}", note=[Accessed: 03-July-2022 ]}

BibLaTeX

@online{reference.wolfram_2022_treemap, organization={Wolfram Research}, title={TreeMap}, year={2022}, url={https://reference.wolfram.com/language/ref/TreeMap.html}, note=[Accessed: 03-July-2022 ]}