NestTree

NestTree[f,tree]

tree 的每个叶子添加孩子,f[expr] 给出数据为 expr 的叶子的新孩子的数据列表.

NestTree[f,tree,n]

对每个叶子的数据连续应用 f,直到第 n 层,为每个叶子最多增加 n 层.

NestTree[f,tree,n,h]

额外将 h 应用于新子树的数据.

NestTree[f,expr,]

通过将 f 嵌套应用于数据为 expr 的叶子构建树.

更多信息和选项

  • 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,|>],其中 treeiNestTree[f,expri,n-1] 的结果. »
  • NestTreeTree 的选项一样.

范例

打开所有单元关闭所有单元

基本范例  (4)

扩展树的叶子:

根据表达式建立一个树图:

通过向叶子添加一层孩子来构建一棵树:

以关联的形式指定孩子:

范围  (9)

构建没有孩子的叶子:

构建没有孩子的 non-leaf:

添加叶子:

扩展树的叶子:

构建多层树:

除了扩展树之外,还对数据应用函数:

指定添加的层的数量:

重复应用运算符,直到不再添加新的层:

在不对中间结果进行计算的情况下构建树:

以关联的形式指定孩子:

选项  (9)

为单个树元素设置样式  (2)

为生成的树元素指定标签:

按位置指定子树的标签和样式:

为整个树图设定样式  (4)

为所有子树指定标签和样式:

指定基本样式:

指定边和树元素的边的样式:

指定基本样式和单个树元素的样式:

树图布局和图形选项  (3)

指定根的方向:

指定一个有名称的嵌入:

指定 Graphics 选项:

应用  (8)

创建一颗生命之树:

创建族谱树图:

根据目录中文件的级别创建树图:

创建由线性递归中的项组成的树:

计算线性递归中的项:

定义一个可以将 TextElement 对象转换为树图的函数:

定义一个可以生成 TextElement 孩子元素的函数:

定义一个可以提取 TextElement 中的 "GrammaticalUnit" 的函数:

TextElement 转换为树图:

创建排列树图:

创建 CalkinWilf 树图:

创建 SternBrocot 树图:

属性和关系  (12)

NestList 给出将运算符 f 连续应用于表达式的结果列表:

NestTree 给出将运算符 f 连续应用于表达式的结果的树:

NestTree 将后续运算符应用于列表的每个元素:

如果 expr 不是树,则 NestTree[f,expr,] 根据表达式 expr 构建树:

这相当于 NestTree[f,Tree[expr,None],]

如果 f 没有返回 {}<||>Hold[]None,则 NestTree[f,tree,] 等价于 NestTree[List@*f,tree,]

NestTree[f,Tree[expr,None],0] 给出 Tree[expr,None]

如果 f[expr] 给出 None,则 NestTree[f,Tree[expr,None]] 给出 Tree[expr,None]

如果 f[expr] 给出 {}Hold[],则 NestTree[f,Tree[expr,None]] 给出 Tree[expr,{}]

即便 f[expr] 给出 {}Hold[],下式也成立:

NestTree 连续应用运算符 f,直到达到最大层级或 f 返回 None{}<||>Hold[]

NestTree[f,Tree[expr,None],n,h] 给出数据为 h[expr] 的树和孩子 NestTree[f,Tree[expri,None],n-1,h],其中 f[expr] 给出 {expr1,expr2,}

NestTree[TreeChildren,Tree[tree,None],Infinity,TreeData] 等价于 tree

NestGraph 将运算符应用于图中的每个顶点:

NestTree 将算符应用于树的每个叶子:

NestTree 模仿 CompleteKaryTree 的输出:

将树转换为实际的 Graph 对象:

生成含有从 0 到 10 的随机整数的树,对于内部子树生成 1 到 3 个孩子:

RandomTree 生成一定大小的随机树:

可能存在的问题  (1)

NestTree[f,tree] 将函数应用于叶子数据:

使用 Tree[tree,None] 可将函数直接应用于树图:

巧妙范例  (3)

构建一个地质时期的细分树:

构造一棵树图,其中的层给出谢尔宾斯基三角形中第零步到第三步的三角形:

从该树图中获取第三步的谢尔宾斯基三角形:

构造一颗树图,其层给出第零步到第三步康托尔 (Cantor) 集中的区间:

从该树图中获取第三步康托尔集:

Wolfram Research (2021),NestTree,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NestTree.html (更新于 2022 年).

文本

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_2024_nesttree, author="Wolfram Research", title="{NestTree}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/NestTree.html}", note=[Accessed: 17-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_nesttree, organization={Wolfram Research}, title={NestTree}, year={2022}, url={https://reference.wolfram.com/language/ref/NestTree.html}, note=[Accessed: 17-November-2024 ]}