Can one display the position of each character in an expression tree? For instance: g[h[i, h], l]
should be displayed using TreeForm where each character is replaced by its position in the tree. I can mimic this with TreeForm[0[10[11, 120[121, 122]], 2]]
. However, I want the true representation of the positions (using the usual list notation for positions, i.e. {0} instead of 0, {1,0} instead of 10 etc. Is there a way to apply the Position function to each such character in the tree and display the positions in TreeForm
?
1 Answer
Perhaps you can convert the heads to the desired strings using MapIndexed
:
TreeForm @ MapIndexed[
ToString @* Last,
g[h[i,h],l],
{-1},
Heads->True
]
-
$\begingroup$ Thanks. This does the trick. Is it possible to just apply matters in one go, i.e. avoiding the need to use both {-1} (i.e. the leaves) and Heads -> True (to apply it to internal nodes, i.e. non-leaves). In other words, is there a way to apply something directly to all nodes of the expression tree? Or is Mathematica set up to distinguish strictly between leaves and internal nodes? (As seems to be the case from its convention to drop the final zero in the leaf positions). $\endgroup$– MichelApr 22, 2019 at 21:31