TreeScan

TreeScan[f,tree]

依次计算应用于 tree 的每个子树数据的 f.

TreeScan[f,tree,levelspec]

f 应用于 levelspec 指定的 tree 层级上的子树数据.

TreeScan[f,tree,levelspecelems]

f 应用于由 levelspec 指定的层级上的子树的元素 elems.

TreeScan[f]

表示可以应用于树的 TreeScan 的运算符形式.

更多信息和选项

  • 扫描一棵树也被称为树的遍历或树的搜索. 可以按多种不同的顺序访问子树,包括深度优先和广度优先遍历.
  • 扫描树通常用于在子树上执行具有副作用的操作,例如进行赋值.
  • TreeScan 允许将函数应用于 Tree 对象中任意层级范围上的子树的元素.
  • TreeScan[f,tree] 丢弃对 tree 的数据应用 f 的结果. 与 TreeMap 不同,TreeScan 不会构建一个新树并返回.
  • 可用 ThrowTreeScan 中退出.
  • levelspecelem 的结构元素 elem 包括:
  • "Data"子树的数据
    "Children"子树的孩子
    "Subtree"子树自身
    "ChildrenData"孩子的数据
  • 其他元素包括:
  • "OriginalData"子树的原始数据
    "OriginalChildren"子树的原始孩子
    "OriginalSubtree"原始子树
    "OriginalChildrenData"孩子的原始数据
    "Position"子树的位置
    "Index"兄弟列表中子树的索引
    "LevelPair"子树的非负和负层级
    "Level"从根开始的子树非负层级
    "NegativeLevel"从叶子开始的子树负层级
  • TreeScan 使用 TreeLevel 中的标准层级规范:
  • n1n
    Infinity1Infinity
    {n}仅层 n
    {n1,n2}n1n2
    All0Infinity
    "Leaves"仅层 -1
    "NonLeaves"0-2
  • TreeScanlevelspec 的默认值为 {0,Infinity}.
  • TreeScan 以从左到右、深度优先的顺序遍历子树,访问父母之前先访问孩子.
  • TreeScan[,TreeTraversalOrderorder] 允许以不同的顺序访问子树,如深度优先和广度优先的遍历.
  • TreeScan[f][tree] 等价于 TreeScan[f,tree].

范例

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

基本范例  (5)

扫描树中的数据:

对树进行扫描,最多到第一层:

扫描子树:

提供位置作为附加参数:

使用 TreeScan 的算符形式:

范围  (12)

层级指定  (5)

扫描所有层级(默认):

扫描第 1 层到第 2 层:

只扫描第 2 层:

扫描第 0 层到第 2 层:

扫描所有层,从第 1 层开始:

也扫描第 0 层:

负的层:

可混用正的和负的层级:

扫描叶子:

扫描非叶子:

元素  (7)

扫描数据(默认):

扫描原始数据:

扫描子树:

扫描原始子树:

扫描孩子:

扫描原始孩子项:

扫描孩子数据:

扫描孩子原始数据:

提供位置作为附加参数:

提供索引而非位置:

提供层级规范作为附加参数:

提供层级而非层级规范:

提供负层级而非层级规范:

提供一系列元素作为参数:

推广和延伸  (1)

可在 TreeScan 内使用 Throw

选项  (3)

TreeTraversalOrder  (3)

默认情况下,以深度优先的顺序访问子树,访问孩子后再访问父母:

指定自上而下、从右到左的顺序:

以广度优先的顺序访问子树,访问下一层上的节点之前先访问(距根节点)相同层级的节点:

以叶优先的顺序访问子树,访问下一层上的节点之前先访问(距叶节点)相同层级的节点:

属性和关系  (4)

访问孩子后再访问父母:

TreeScan 执行与 TreeMap 一样的运算,但不返回结果:

根据表达式的标头构建一棵树:

TreeScan 扫描一棵树的子树的数据:

Scan 可以直接扫描标头和叶子:

SowReap 收集结果:

可能存在的问题  (1)

TreeScan 默认从第 1 层开始,因此不会将函数应用于整棵树:

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

文本

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

CMS

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

APA

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

BibTeX

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

BibLaTeX

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