TreeMap
更多信息和选项
- TreeMap 允许将函数应用于 Tree 对象中任何层级范围内的子树元素. 该函数可以以多种顺序应用于子树,包括深度优先和广度优先遍历.
- levelspecelem 的结构性元素 elem 包括:
- 其他元素包括:
-
"OriginalChildren" 子树的原始孩子 "OriginalSubtree" 原始子树 "OriginalChildrenData" 孩子的原始数据 "Position" 子树的位置 "Index" 兄弟列表中的子树的索引 "LevelPair" 子树的非负和负数层级 "Level" 根的子树的非负层级 "NegativeLevel" 叶子的子树的负数层级 - TreeMap 使用 TreeLevel 中的标准层级规范:
-
n 第 1 层到第 n 层 Infinity 第 1 层到 Infinity {n} 第 n 层 {n1,n2} 第 n1 层到第 n2 层 All 第 0 层到 Infinity "Leaves" 第 -1 层 "NonLeaves" 第 0 层到第 -2 层 - 在 TreeMap 中,levelspec 的默认值为 {0,Infinity}.
- TreeMap 以从左到右、深度优先的顺序遍历子树,孩子先于父母被访问.
- TreeMap 的选项与 Tree 的选项相同,但还多一条:
-
TreeTraversalOrder Automatic 以不同的顺序访问子树,例如深度优先和广度优先遍历 - TreeMap[f][tree] 等价于 TreeMap[f,tree].
范例
打开所有单元 关闭所有单元基本范例 (5)
TreeMap[f, [image]]TreeMap[f, [image], {1, 2}]TreeMap[f @* TreeRules, [image], All -> "Subtree"]TreeMap[f, [image], All -> {"Data", "Position"}]使用 TreeMap 的算符形式:
TreeMap[f][[image]]范围 (12)
层级规范 (5)
tree = [image];TreeMap[f, tree, All]TreeMap[f, tree, 2]TreeMap[f, tree, {2}]TreeMap[f, tree, {0, 2}]TreeMap[f, [image], Infinity]TreeMap[f, [image], {0, Infinity}]tree = [image];TreeMap[f, tree, -1]TreeMap[f, tree, -2]TreeMap[f, tree, {-2}]TreeMap[f, [image], {1, -1}]TreeMap[f, [image], "Leaves"]TreeMap[f, [image], "NonLeaves"]元素 (7)
TreeMap[f, [image], All -> "Data"]TreeMap[f @* TreeRules, [image], All -> "Subtree"]TreeMap[f @* TreeRules, [image], All -> "OriginalSubtree"]TreeMap[f, [image], All -> "Children"]TreeMap[f, [image], All -> "OriginalChildren"]TreeMap[f, [image], All -> "ChildrenData"]TreeMap[f, [image], All -> "OriginalChildrenData"]TreeMap[f, [image], All -> {"Data", "Position"}]TreeMap[f, [image], All -> {"Data", "Index"}]TreeMap[f, [image], All -> {"Data", "LevelPair"}]TreeMap[f, [image], All -> {"Data", "Level"}]TreeMap[f, [image], All -> {"Data", "NegativeLevel"}]TreeMap[f, [image], All -> {"Data", "Position", "LevelPair"}]选项 (3)
TreeTraversalOrder (3)
n = 1;
TreeMap[n++&, [image], TreeTraversalOrder -> "DepthFirst"]n = 1;
TreeMap[n++&, [image], TreeTraversalOrder -> {"DepthFirst", "TopDown", "LeftRight"}]以广度优先顺序访问子树,从根开始同一层级的节点在下一级的节点之前被访问:
n = 1;
TreeMap[n++&, [image], TreeTraversalOrder -> "BreadthFirst"]以叶子优先顺序访问子树,从叶子开始同一层级的节点在下一级节点之前被访问:
n = 1;
TreeMap[n++&, [image], TreeTraversalOrder -> "LeavesFirst"]属性和关系 (6)
TreeMap[Echo, [image]]TreeScan[Echo @* f, [image]]TreeMap[Echo @* f, [image]]TreeMap[f,tree,levelspec] 等价于 TreeMapAt[f,tree,TreeLevel[levelspec]]:
TreeMap[f, [image], {1, 2}] === TreeMapAt[f, [image], TreeLevel[{1, 2}]]ExpressionTree[1[2[3, 4], 5[6, 7]], "Heads"]TreeMap 映射树中子树的数据:
TreeMap[f, %, All]TreeExpression[%, "Heads"]Map 可以直接映射到在标头和叶子上:
mapAtData[f_][head_[args___]] := f[head][args]
mapAtData[f_][expr_] := f[expr]Map[mapAtData[f], 1[2[3, 4], 5[6, 7]], All]ExpressionTree[1[2, 3][4[5, 6], 7[8, 9]], "Atoms", Heads -> True]TreeMap 可以只映射树中叶子的数据:
TreeMap[f, %, {-1}]TreeExpression[%, "Atoms", Heads -> True]Map 可以直接映射在表达式的原子上:
% === Map[f, 1[2, 3][4[5, 6], 7[8, 9]], {-1}, Heads -> True]TreeFold 将函数应用于孩子的数据和结果:
TreeFold[f, [image]]TreeMap 可算出同样的结果:
TreeMap[f, [image], "NonLeaves" -> {"Data", "ChildrenData"}]根的新数据是 TreeFold 的结果:
TreeData[%]可能存在的问题 (1)
TreeMap 默认情况下从第 1 层开始,因此不会将该函数应用于整个树:
TreeMap[f, [image], -1]TreeMap[f, [image], {0, -1}]文本
Wolfram Research (2021),TreeMap,Wolfram 语言函数,https://reference.wolfram.com/language/ref/TreeMap.html (更新于 2024 年).
CMS
Wolfram 语言. 2021. "TreeMap." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/TreeMap.html.
APA
Wolfram 语言. (2021). TreeMap. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/TreeMap.html 年
BibTeX
@misc{reference.wolfram_2026_treemap, author="Wolfram Research", title="{TreeMap}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/TreeMap.html}", note=[Accessed: 03-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_treemap, organization={Wolfram Research}, title={TreeMap}, year={2024}, url={https://reference.wolfram.com/language/ref/TreeMap.html}, note=[Accessed: 03-November-2026]}