ExpressionTree

ExpressionTree[expr]

从表达式 expr 的结构中给出 Tree 对象.

ExpressionTree[expr,struct]

从表达式 expr 中给出一个 Tree 对象,其数据和子树由 struct 指定.

更多信息和选项

  • ExpressionTree 可以根据指定的列表、数组、规则、XML 和任意表达式构造 Tree 对象.
  • 任意表达式的 struct 的可能形式包括: »
  • "HeadTrees"按层级排序的对应于表达式的子表达式的头部的树图
    "Heads"按层级排序的表达式的子表达式的头部
    "Subexpressions"按层级排序的表达式的子表达式
    "Atoms"-1 级处表达式的原子子表达式
    Null按层级排序的没有数据的表达式的子表达式
    None表达式自身
  • ExpressionTree 采用与 Tree 相同的选项.
  • ExpressionTree 的额外选项包括:
  • Heads 包括表达式的头部和其作为子树的部分
  • 具有默认选项设置 HeadsFalse 的表达式 f[a,b][g[1,2],x] 的可能结构包括:
  • 带有选项设置 HeadsTrue 的这些结构的版本包括: »
  • 用于任意表达式的 struct 的保留形式包括:
  • "HeldHeadTrees"按层级对应于表达式的子表达式的保留头部的树图
    "HeldHeads"按层级排序的保留表达式的子表达式的头部
    "HeldSubexpressions"以层排序的表达式的保留子表达式
    "HeldAtoms"在 -1 层处的表达式的保留原子子表达式
  • 常见表达式类型的 struct 可能形式包括:
  • "XML"XML 对象的标签、属性和元素
  • 用于嵌套列表和关联的 struct 的可能形式包括: »
  • "List"嵌套列表的元素
    "Association"嵌套关联的元素
    "Dataset"数据集的标题和数据
  • 嵌套规则 struct 的可能形式包括: »
  • "Rules"嵌套规则的左侧和叶子
    "JSON"JSON 对象的名称和值,使用名称作为数据
    "RawJSON"JSON 对象的名称和值,使用名称作为键
    "FileSystem"文件系统中的目录和文件

范例

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

基本范例  (4)

从表达式的结构中构建树结构:

包括头部:

指定要使用的结构:

根据符号 XML 构造一棵树:

根据未计算的表达式构造一棵树:

根据嵌套关联构造一棵树:

范围  (14)

任意表达式  (6)

"HeadTrees"  (1)

如果 AtomQ[head] 给出 True,则 ExpressionTree[head[arg1,arg2,],"HeadTrees"] 给出一棵树,其根包含 head,子节点由 ExpressionTree[argi,"HeadTrees"] 给出:

如果 AtomQ[head] 给出 False,则 ExpressionTree[head[arg1,arg2,],"HeadTrees"] 给出一颗树图,其根包含 ExpressionTree[head,"HeadTrees"] 而非 head

包含头部:

ExpressionTree[atom,"HeadTrees"] 给出一个包含原子表达式 atom 的叶子:

"Heads"  (1)

ExpressionTree[head[arg1,arg2,],"Heads"] 给出根包含 head 且孩子由 ExpressionTree[argi,"Heads"] 给出的树结构:

包含头部:

ExpressionTree[atom,"Heads"] 给出一个包含原子表达式 atom 的叶子:

"Subexpressions"  (1)

ExpressionTree[expr0[expr1,expr2,],"Subexpressions"] 给出根包含 expr0[expr1,expr2,] 且孩子由 ExpressionTree[expri,"Subexpressions"] 给出的树结构:

包含头部:

ExpressionTree[atom,"Subexpressions"] 给出一个包含原子表达式 atom 的叶子:

"Atoms"  (1)

ExpressionTree[expr0[expr1,expr2,],"Atoms"] 给出由 ExpressionTree[expri,"Atoms"] 给出的具有子节点的树:

包含头部:

ExpressionTree[atom,"Atoms"] 给出一个包含原子表达式 atom 的叶子:

Null  (1)

ExpressionTree[expr0[expr1,expr2,],Null] 给出由 ExpressionTree[expri,Null] 给出的具有子节点的树:

包含头部:

ExpressionTree[atom,Null] 给出一个包含 Null 的叶子,表示原子表达式 atom

None  (1)

ExpressionTree[expr,None] 给出一个包含 expr 的叶子:

常用表达式  (1)

"XML"  (1)

根据符号 XML 构造一棵树:

嵌套列表和关联  (3)

"List"  (1)

根据嵌套列表构造一棵树:

"Association"  (1)

根据嵌套关联构造一棵树:

"Dataset"  (1)

根据嵌套的列表和关联关系构建树图:

嵌套规则  (4)

"Rules"  (1)

根据嵌套规则构造一棵树:

"JSON"  (1)

根据 JSON 规则构造一棵树:

"RawJSON"  (1)

根据 JSON 关联构造一棵树:

"FileSystem"  (1)

根据一个以文件名为密钥的嵌套关联构建树图:

选项  (11)

Heads  (2)

使用默认选项设置 HeadsFalse,表达式的头不包含在任何层级中:

设置 HeadsTrue 时,会像表达式的其他元素一样包含头部:

默认情况下,任意表达式的结构不包括头部:

包含头部:

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

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

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

为整颗树图设置样式  (4)

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

指定基本样式:

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

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

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

指定根的方向:

指定一个有名称的嵌入:

指定 Graphics 选项:

应用  (1)

从复杂的反导数结构中构建一个树状结构:

属性和关系  (15)

从表达式中构建一个树结构:

追溯原始表达式:

将树图转换为表达式:

将结果表达式转换回树图:

根据列表的分组构造树图:

默认结构 "HeadTrees" 下,ExpressionTree 构建一个树结构,可用子树包含给出子表达式标头的树结构的数据:

结构 "Heads" 给出一个树结构,与 "HeadTrees" 表示同样的数据,但数据包括子表达式标头自身:

ExpressionTree[expr,"Heads"] 给出类似于 TreeForm[expr] 的输出:

结构 "Subexpressions" 给出了一棵树,其形状与 "Heads" 给出的形状相同,但数据包含子表达式本身而非其头部:

在第 n 层的树的子树状结构对应第 n 层的除标头外的表达式的某些部分:

包含头部:

结构 "Atoms" 给出一个树状结构,该结构与 "Subexpressions" 给出的形状一样,但仅在叶子节点处储存数据:

Null 结构给出一棵形状相同但没有数据的树:

根据表达式的头部构造树图:

使用 TreeFold 在每一个子树上方插入父辈节点:

对应表达式中参数的映射:

默认情况下,Map 映射在表达式中的参数上:

根据表达式中的原子构造树图:

使用 TreeFold 在每个子树前插入兄弟节点

对应表达式中子表达式的映射:

Map 在设置了 HeadsTrue 的表达式中映射子表达式:

根据表达式的头部构造树图:

TreeMap 映射在树图中子树的数据上:

对应表达式头部和叶片的映射:

Map 可直接映射在头部和叶片上:

根据表达式中的原子构造树图:

TreeMap 可以仅映射树中叶子的数据:

对应表达式中原子的映射:

Map 可直接映射于表达式中的原子上:

Depth[expr] 等价于 TreeDepth[ExpressionTree[expr]]+1:

Depth[expr,HeadsTrue] 等价于 TreeDepth[ExpressionTree[expr,"Subexpressions"]]+1:

ExpressionTree 在构建树状结构之前计算子表达式:

使用 Unevaluated 可以将子表达式的计算推迟到树状结构建立以后进行:

保留结构保证子表达式封装在 HoldForm 中,这样可以阻止所有计算:

显示 HoldForm 封装:

根据不激活表达式构造一棵树:

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

文本

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

CMS

Wolfram 语言. 2021. "ExpressionTree." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2022. https://reference.wolfram.com/language/ref/ExpressionTree.html.

APA

Wolfram 语言. (2021). ExpressionTree. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ExpressionTree.html 年

BibTeX

@misc{reference.wolfram_2024_expressiontree, author="Wolfram Research", title="{ExpressionTree}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/ExpressionTree.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

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