NestTree
更多信息和选项
- NestTree 生成 Tree 对象,通过应用 f 对叶子连续添加更深层的孩子:
- NestTree 对于根据表达式构造树和扩展树的叶子很有用.
- 对于每一层新的嵌套,每个叶子 Tree[expr,None] 被 Tree[expr,{Tree[expr1,None],…}] 替换,其中 f[expr] 给出 {expr1,expr2,…}: »
- 在 NestTree[f,tree,n] 中,n 可以是任意非负机器整数或 Infinity. »
- NestTree[f,tree,n] 最多额外为每个叶子添加 n 层. 如果 f 返回 None、{}、<||> 或 Hold[],则不会再为该叶子添加更多的层. »
- 在 NestTree[f,tree,n,h] 中,每个叶子 Tree[expr,None] 被 Tree[h[expr],…] 替换,包括原始叶子和那些在中间步骤生成的叶子. »
- 如果 expr 不是显式的 Tree 对象,则 NestTree[f,expr,…] 等价于 NestTree[f,Tree[expr,None],…]. »
- 如果 f[expr] 给出 Hold[expr1,expr2,…],则表达式 expri 被赋予函数 f,且不对 NestTree[f,tree,n,h] 中的 h 进行计算. »
- 在 NestTree[f,tree] 中,f[expr] 应给出 {expr1,expr2,…}、<|key1expr1,key2expr2,…|> Hold[expr1,expr2,…] 或 None.
- 如果 f 没有返回 {…}、<|…|>、Hold[…] 或 None,则 NestTree[f,tree,…] 等价于 NestTree[List@*f,tree,…]. »
- NestTree[f,tree,0] 给出 tree. NestTree[f,tree,0,h] 等价于 TreeMap[h,tree,{-1}].
- 如果 f[expr] 给出 <|key1expr1,key2expr2,…|>,则 NestTree[f,expr,n] 给出 Tree[expr,<|key1tree1,key2tree2,…|>],其中 treei 是 NestTree[f,expri,n-1] 的结果. »
- NestTree 与 Tree 的选项一样.
-
AlignmentPoint Center 在图形内对齐的缺省点 AspectRatio Automatic 高与宽的比 Axes False 是否绘制轴 AxesLabel None 坐标轴标签 AxesOrigin Automatic 坐标轴原点 AxesStyle {} 坐标轴样式指定 Background None 绘图的背景色 BaselinePosition Automatic 如何与环绕文本基线对齐 BaseStyle {} 图形的基本样式指定 ContentSelectable Automatic 是否允许进行内容选择 CoordinatesToolOptions Automatic 坐标工具的详细行为 Epilog {} 主图形之后执行的图形指令 FormatType TraditionalForm 文本的缺省样式类型 Frame False 是否在图形周围放置边框 FrameLabel None 边框标签 FrameStyle {} 边框的样式指定 FrameTicks Automatic 边框刻度 FrameTicksStyle {} 边框刻度的样式指定 GridLines None 绘制的网格线 GridLinesStyle {} 网格线的样式指定 ImageMargins 0. 图形周围的边幅 ImagePadding All 为标签等额外填充内容 ImageSize Automatic 图形的绝对尺寸 LabelStyle {} 标签的样式指定 Method Automatic 使用图形方式的细节 PlotLabel None 图形的一个整体标签 PlotRange All 图形值的范围 PlotRangeClipping False 是否在图形范围剪切 PlotRangePadding Automatic 填充图形值范围的程度 PlotRegion Automatic 填充的最后显示区域 PreserveImageOptions Automatic 当显示相同图形的新版本时,是否保存图形选项 Prolog {} 主图形之前执行的图形指令 RotateLabel True 是否在边框上旋转 y 标签 Ticks Automatic 坐标轴标记 TicksStyle {} 坐标轴标记的样式指定
所有选项的列表
范例
打开所有单元 关闭所有单元基本范例 (4)
NestTree[{2#, 2# + 1}&, [image]]NestTree[{2#, 2# + 1}&, [image], 2]NestTree[f, x, 2]NestTree[{f[#], g[#]}&, x, 2]NestTree[EntityValue[#, EntityProperty["Person", "Children"]]&, Entity["Person", "QueenElizabethII::f5243"]]NestTree[<|"Even" -> 2#, "Odd" -> 2# + 1|>&, 1, 2]范围 (9)
NestTree[None&, x]NestTree[{}&, x]NestTree[{1, 2, 3}&, x]NestTree[{2#, 2# + 1}&, [image]]NestTree[f, x, 3]NestTree[Rest @* Most @* Divisors, [image], 1, FactorInteger]NestTree[Range[# - 1]&, 6, 2]NestTree[Range[# - 1]&, 6, Infinity]NestTree[Function[expr, Level[Unevaluated[expr], {1}, Hold], HoldFirst], Unevaluated[3 * 2 + 1], 2, HoldForm]NestTree[<|"Even" -> 2#, "Odd" -> 2# + 1|>&, 1, 2]选项 (9)
为单个树元素设置样式 (2)
为整个树图设定样式 (4)
NestTree[{# - 1, # - 2}&, 6, 3, TreeElementLabel -> All -> None, TreeElementStyle -> All -> EdgeForm[Red]]NestTree[{# - 1, # - 2}&, 6, 3, BaseStyle -> LightRed]NestTree[{# - 1, # - 2}&, 6, 3, BaseStyle -> {Dashed, EdgeForm[{Dashing[{}], Thick}]}]NestTree[{# - 1, # - 2}&, 6, 3, BaseStyle -> {Red, EdgeForm[None]}, TreeElementStyle -> All -> Opacity[0]]树图布局和图形选项 (3)
NestTree[{2#, 2# + 1}&, 1, 2, TreeLayout -> Bottom]NestTree[{a, a, a, a}&, a, 3, TreeLayout -> "BalloonEmbedding", IconizedObject[«labels»]]指定 Graphics 选项:
NestTree[Divisors, 24, Background -> LightBlue, ImageSize -> Full]应用 (8)
childTaxa[ent_] := Replace[ent[EntityProperty["Species", "SubEntities"]], _Missing -> {}];tree = NestTree[childTaxa, Entity["Species", "Kingdom:Animalia"], 3];TreeOutline[tree]children[ent : Entity["Person", _]] := Replace[ent[EntityProperty["Person", "Children"]], _Missing -> {}];
children[_] = {};NestTree[children, Entity["Person", "QueenElizabethII::f5243"], 2]NestTree[FileNames[All, #]&, FileNameJoin[{$InstallationDirectory, "Documentation"}], 2, FileBaseName]NestTree[If[# > 2, {# - 1, # - 2}, None]&, 6, Infinity, fib]TreeFold[{Tree[Total[TreeData /@ #2], #2]&, RulesTree[1]&}, %]定义一个可以将 TextElement 对象转换为树图的函数:
textElementTree[TextElement[{elem_}]] := textElementTree[elem];
textElementTree[te_TextElement] := NestTree[textElementChildren, te, Infinity, textElementData];定义一个可以生成 TextElement 孩子元素的函数:
textElementChildren[TextElement[elems_List, RepeatedNull[_, 1]]] := elems;
textElementChildren[TextElement[elem_, RepeatedNull[_, 1]]] := {elem};
textElementChildren[text_String] := None;定义一个可以提取 TextElement 中的 "GrammaticalUnit" 的函数:
textElementData[TextElement[_]] := Null;
textElementData[TextElement[_, prop_]] := CanonicalName[prop["GrammaticalUnit"]];
textElementData[text_String] := text;将 TextElement 转换为树图:
textElementTree[TextStructure["Time flies like an arrow."]]choice[{_, list_List}] := MapIndexed[{e, pos} |-> {e, Delete[list, pos]}, list]NestTree[choice, {Null, Range[4]}, Infinity, First, IconizedObject[«layout»]]NestTree[Replace[{m_, n_} :> {{m, m + n}, {m + n, n}}], {1, 1}, 3, Replace[{m_, n_} :> m / n]]NestTree[n Replace[ContinuedFraction[n], {as___, a_} :> Sort[FromContinuedFraction /@ {{as, a - 1, 2}, {as, a + 1}}]], 1, 3]属性和关系 (12)
NestList 给出将运算符 f 连续应用于表达式的结果列表:
NestList[f, x, 3]NestTree 给出将运算符 f 连续应用于表达式的结果的树:
NestTree[f, x, 3]NestTree 将后续运算符应用于列表的每个元素:
NestTree[{f1[#], f2[#]}&, x, 2]如果 expr 不是树,则 NestTree[f,expr,…] 根据表达式 expr 构建树:
NestTree[{2#, 2# + 1}&, 1, 3]这相当于 NestTree[f,Tree[expr,None],…]:
% === NestTree[{2#, 2# + 1}&, [image], 3]如果 f 没有返回 {…}、<|…|>、Hold[…] 或 None,则 NestTree[f,tree,…] 等价于 NestTree[List@*f,tree,…]:
NestTree[f, x]% === NestTree[List @* f, x]NestTree[f,Tree[expr,None],0] 给出 Tree[expr,None]:
NestTree[f, expr, 0]如果 f[expr] 给出 None,则 NestTree[f,Tree[expr,None]] 给出 Tree[expr,None]:
NestTree[None&, expr]如果 f[expr] 给出 {…} 或 Hold[…],则 NestTree[f,Tree[expr,None]] 给出 Tree[expr,{…}]:
NestTree[{expr1, expr2, expr3}&, expr]即便 f[expr] 给出 {} 或 Hold[],下式也成立:
NestTree[{}&, expr]NestTree 连续应用运算符 f,直到达到最大层级或 f 返回 None、{}、<||> 或 Hold[]:
NestTree[Range[# - 1]&, 5, Infinity]NestTree[f,Tree[expr,None],n,h] 给出数据为 h[expr] 的树和孩子 NestTree[f,Tree[expri,None],n-1,h],其中 f[expr] 给出 {expr1,expr2,…}:
f[x_] := If[x > 7, {}, {2x, 2x + 1}]NestTree[f, 1, 2, h]% === Tree[h[1], {NestTree[f, 2, 1, h], NestTree[f, 3, 1, h]}]NestTree[TreeChildren,Tree[tree,None],Infinity,TreeData] 等价于 tree:
NestTree[TreeChildren, Tree[[image], None], Infinity, TreeData]NestGraph 将运算符应用于图中的每个顶点:
NestGraph[Range[2#, 2# + 2]&, [image], VertexLabels -> Automatic]NestTree 将算符应用于树的每个叶子:
NestTree[Range[2#, 2# + 2]&, [image]]用 NestTree 模仿 CompleteKaryTree 的输出:
CompleteKaryTree[4, 3]NestTree[{Null, Null, Null}&, Null, 3]将树转换为实际的 Graph 对象:
TreeGraph[%]生成含有从 0 到 10 的随机整数的树,对于内部子树生成 1 到 3 个孩子:
SeedRandom[3];NestTree[RandomInteger[10, RandomInteger[{1, 3}]]&, RandomInteger[10], 3]用 RandomTree 生成一定大小的随机树:
SeedRandom[125];RandomTree[21]可能存在的问题 (1)
巧妙范例 (3)
NestTree[#["Subdivisions"]&, Entity["GeologicalPeriod", "PhanerozoicEon"], 2, TreeElementStyleFunction -> All -> (#["CGMWColor"]&), TreeElementLabelFunction -> All -> CommonName, TreeLayout -> Left, AspectRatio -> 2]构造一棵树图,其中的层给出谢尔宾斯基三角形中第零步到第三步的三角形:
NestTree[Array[(1/2) (KroneckerDelta[#1, #3] + KroneckerDelta[#2, #3])&, {3, 3, 3}].#&, CirclePoints@3, 3, IconizedObject[«options»]]TreeFold[{RegionUnion@@#2&, Region @* Triangle}, %]构造一颗树图,其层给出第零步到第三步康托尔 (Cantor) 集中的区间:
NestTree[Array[(1/3) (2 KroneckerDelta[#1, #3] + KroneckerDelta[#2, #3])&, {2, 2, 2}].#&, {0, 1}, 3, IconizedObject[«image size»]]TreeFold[{RegionUnion@@#2&, Region @* Interval}, %]文本
Wolfram Research (2021),NestTree,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NestTree.html (更新于 2022 年).
CMS
Wolfram 语言. 2021. "NestTree." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2022. https://reference.wolfram.com/language/ref/NestTree.html.
APA
Wolfram 语言. (2021). NestTree. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/NestTree.html 年
BibTeX
@misc{reference.wolfram_2026_nesttree, author="Wolfram Research", title="{NestTree}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/NestTree.html}", note=[Accessed: 04-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_nesttree, organization={Wolfram Research}, title={NestTree}, year={2022}, url={https://reference.wolfram.com/language/ref/NestTree.html}, note=[Accessed: 04-November-2026]}