TreeScan

TreeScan[f,tree]

tree の各部分木内のデータに適用された f を順に評価する.

TreeScan[f,tree,levelspec]

treelevelspec によって指定されたレベルにある部分木のデータに f を適用する.

TreeScan[f,tree,levelspecelems]

levelspec によって指定されたレベルにある部分木の要素 elemf を適用する.

TreeScan[f]

木に適用可能なTreeScanの演算子形を表す.

詳細とオプション

  • 木のスキャンは木の探索または木の検索としても知られている.部分木は,深さ優先探索や幅優先探索を含むさまざまな順序で訪れることができる.
  • 木のスキャンは,通常,部分木に対する操作を実行するために使われる.この部分木に対する操作には割当てを行うというような「副作用」がある.
  • TreeScanを使うと関数をTreeオブジェクト内の任意のレベル範囲の部分木の要素に適用することができる.
  • TreeScan[f,tree]ftree のデータに適用した結果を廃棄する.TreeScanTreeMapとは異なり新たな木を構築して返すことはしない.
  • Throwを使ってTreeScanを終えることができる.
  • 次は,levelspecelem の構造化要素 elem である.
  • "Data"部分木のデータ
    "Children"部分木の子
    "Subtree"部分木それ自体
    "ChildrenData"子のデータ
  • 次はその他の要素である.
  • "OriginalData"部分木のもとからのデータ
    "OriginalChildren"部分木のもとからの子
    "OriginalSubtree"もとからの部分木
    "OriginalChildrenData"子のもとからのデータ
    "Position"部分木の位置
    "Index"兄弟のリストの中の部分木の指標
    "LevelPair"部分木の非負の葉と負の葉
    "Level"部分木の根からの非負のレベル
    "NegativeLevel"部分木の葉からの負のレベル
  • TreeScanTreeLevelにおけるのと同じように標準的なレベル指定を使う.
  • nレベル1から n まで
    Infinityレベル1からInfinityまで
    {n}レベル n のみ
    {n1,n2}レベル n1からレベル n2まで
    Allレベル0からInfinityまで
    "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)

ThrowTreeScanの中で使うことができる:

オプション  (3)

TreeTraversalOrder  (3)

デフォルトで,部分木は深さ優先順で訪れられ,親は子の後になる:

上から下で右から左の順序を指定する:

深さ優先順で部分木を訪れる.根から同じレベルにあるノードは次のレベルのものよりも先に訪れられる:

葉優先順で部分木を訪れる.葉から同じレベルにあるノードは次のレベルのノードよりも先に訪れられる:

特性と関係  (4)

子は親よりも先に訪れられる:

TreeScanTreeMapと同じことを行うが,結果は返さない:

式の中の頭部から木を構築する:

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 Language. 2021. "TreeScan." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/ref/TreeScan.html.

APA

Wolfram Language. (2021). TreeScan. Wolfram Language & System Documentation Center. Retrieved from 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: 21-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: 21-November-2024 ]}