TreeCases
更多信息和选项
- TreeCases 列出具有与 Tree 对象中任何级别范围内的任何模式匹配的数据的子树. 匹配列表可以按许多不同的顺序给出,包括深度优先和广度优先遍历.
- TreeCases[tree,pattern] 依次测试 tree 的所有子树,以尝试找到数据匹配 pattern 的子树.
- TreeCases 使用 TreeLevel 中的标准级别规范:
-
n 层 1 至 n All 层 0 至 Infinity Infinity 层 1 至 Infinity {n} 仅层 n {n1,n2} 层 n1 至 n2 - 在 TreeCases 中,levelspec 的默认值为 {0,Infinity}.
- TreeCases 以从左到右、深度优先的顺序遍历子树,子先于父被访问.
- TreeCases[…,TreeTraversalOrderorder] 允许以不同的顺序访问子树,例如深度优先和广度优先遍历.
- TreeCases[pattern][tree] 等价于 TreeCases[tree,pattern].
范例
打开所有单元 关闭所有单元基本范例 (4)
TreeCases[[image], _ ? EvenQ]TreeCases[[image], _ ? EvenQ, {0, -2}]TreeCases[[image], _ ? PrimeQ, All, 3]使用 TreeCases 的运算符形式:
TreeCases[_ ? PrimeQ][[image]]范围 (6)
TreeCases[[image], _ ? OddQ]TreeCases[[image], _ ? OddQ, 2]TreeCases[[image], _ ? OddQ, {-1}]TreeCases[[image], _ ? OddQ, {0, -2}]TreeCases[[image], _ ? OddQ, All, 4]使用 TreeCases 作为树位置规范中的运算符形式:
TreeExtract[[image], {TreeCases[_ ? OddQ]}]选项 (3)
TreeTraversalOrder (3)
默认情况下,子树以深度优先的顺序列出,父树在他们的子树之后被访问:
TreeCases[[image], _, TreeTraversalOrder -> "DepthFirst"]TreeCases[[image], _, TreeTraversalOrder -> {"DepthFirst", "TopDown", "RightLeft"}]以广度优先顺序列出子树,从根节点算起同一级别的节点在下一级节点之前被访问:
TreeCases[[image], _, TreeTraversalOrder -> "BreadthFirst"]以叶优先顺序列出子树,从叶算起位于同一级别的节点在下一级节点之前被访问:
TreeCases[[image], _, TreeTraversalOrder -> "LeavesFirst"]属性和关系 (5)
TreeCases 提取由 TreePosition 给出的位置:
tree = [image];TreeCases[tree, _ ? PrimeQ]TreePosition[tree, _ ? PrimeQ]TreeExtract[tree, %]TreeCount 给出由 TreeCases 给出的匹配子树的数量:
TreeCases[[image], x]TreeCount[[image], x]TreeCases[tree,pattern,Infinity] 等价于 TreeChildren@TreeExtract[tree,TreeCases[pattern]]:
TreeCases[[image], _ ? EvenQ, Infinity]% === TreeChildren@TreeExtract[[image], TreeCases[_ ? EvenQ]]Cases[expr,pattern,levelspec] 等价于 TreeData/@TreeCases[ExpressionTree[expr,"Subexpressions"],pattern,levelspec]:
Cases[{{1, 4, a, 0}, {b, 3, 2, 2}, {c, c, 5, 5}}, _Integer, 2]ExpressionTree[{{1, 4, a, 0}, {b, 3, 2, 2}, {c, c, 5, 5}}, "Subexpressions"]TreeData /@ TreeCases[%, _Integer, 2]对于正数层,Cases[expr,pattern,levelspec,HeadsTrue] 等价于 TreeData/@TreeCases[ExpressionTree[expr,"Subexpressions",HeadsTrue],pattern,levelspec]:
Cases[{1, 2, f[a, b]}, _, {0, Infinity}, Heads -> True]ExpressionTree[{1, 2, f[a, b]}, "Subexpressions", Heads -> True]TreeData /@ TreeCases[%, _, {0, Infinity}]可能存在的问题 (1)
TreeCases 默认情况下从第 1 级开始,因此不访问根目录:
TreeCases[[image], _, 1]TreeCases[[image], _, {0, 1}]文本
Wolfram Research (2021),TreeCases,Wolfram 语言函数,https://reference.wolfram.com/language/ref/TreeCases.html (更新于 2021 年).
CMS
Wolfram 语言. 2021. "TreeCases." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/TreeCases.html.
APA
Wolfram 语言. (2021). TreeCases. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/TreeCases.html 年
BibTeX
@misc{reference.wolfram_2026_treecases, author="Wolfram Research", title="{TreeCases}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/TreeCases.html}", note=[Accessed: 03-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_treecases, organization={Wolfram Research}, title={TreeCases}, year={2021}, url={https://reference.wolfram.com/language/ref/TreeCases.html}, note=[Accessed: 03-November-2026]}