NestTree
詳細とオプション
- NestTreeは,演算子 f を使って連続的に子のより深いレベルを葉に加えることでTreeオブジェクトを育てる.
- 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はNestTree[f,tree,n,h]では評価されずに関数 f と 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,…|>]を与える.ここで,treeiはNestTree[f,expri,n-1]の結果である. »
- NestTreeにはTreeと同じオプションが使える.
全オプションのリスト
例題
すべて開く すべて閉じる例 (4)
NestTree[{2#, 2# + 1}&, [image]]NestTree[{2#, 2# + 1}&, [image], 2]NestTree[f, x, 2]NestTree[{f[#], g[#]}&, x, 2]NestTree[EntityValue[#, EntityProperty["Person", "Children"]]&, Entity["Person", "QueenElizabethII::f5243"]]NestTree[<|"Even" -> 2#, "Odd" -> 2# + 1|>&, 1, 2]スコープ (9)
NestTree[None&, x]NestTree[{}&, x]NestTree[{1, 2, 3}&, x]NestTree[{2#, 2# + 1}&, [image]]NestTree[f, x, 3]NestTree[Rest @* Most @* Divisors, [image], 1, FactorInteger]NestTree[Range[# - 1]&, 6, 2]NestTree[Range[# - 1]&, 6, Infinity]NestTree[Function[expr, Level[Unevaluated[expr], {1}, Hold], HoldFirst], Unevaluated[3 * 2 + 1], 2, HoldForm]NestTree[<|"Even" -> 2#, "Odd" -> 2# + 1|>&, 1, 2]オプション (9)
個々の木の要素のスタイル付け (2)
NestTree[{2#, 2# + 1}&, 1, TreeElementLabel -> "?"]NestTree[Range[3# - 1, 3# + 1]&, 1, 2,
TreeElementLabel -> {___, _ ? EvenQ} -> None, TreeElementStyle -> {___, _ ? OddQ} -> {LightRed, EdgeForm[{Red, Dashed}]}]木全体のスタイル付け (4)
NestTree[{# - 1, # - 2}&, 6, 3, TreeElementLabel -> All -> None, TreeElementStyle -> All -> EdgeForm[Red]]NestTree[{# - 1, # - 2}&, 6, 3, BaseStyle -> LightRed]NestTree[{# - 1, # - 2}&, 6, 3, BaseStyle -> {Dashed, EdgeForm[{Dashing[{}], Thick}]}]NestTree[{# - 1, # - 2}&, 6, 3, BaseStyle -> {Red, EdgeForm[None]}, TreeElementStyle -> All -> Opacity[0]]木のレイアウトとグラフィックスオプション (3)
NestTree[{2#, 2# + 1}&, 1, 2, TreeLayout -> Bottom]NestTree[{a, a, a, a}&, a, 3, TreeLayout -> "BalloonEmbedding", IconizedObject[«labels»]]Graphicsオプションを指定する:
NestTree[Divisors, 24, Background -> LightBlue, ImageSize -> Full]アプリケーション (8)
childTaxa[ent_] := Replace[ent[EntityProperty["Species", "SubEntities"]], _Missing -> {}];tree = NestTree[childTaxa, Entity["Species", "Kingdom:Animalia"], 3];TreeOutline[tree]children[ent : Entity["Person", _]] := Replace[ent[EntityProperty["Person", "Children"]], _Missing -> {}];
children[_] = {};NestTree[children, Entity["Person", "QueenElizabethII::f5243"], 2]NestTree[FileNames[All, #]&, FileNameJoin[{$InstallationDirectory, "Documentation"}], 2, FileBaseName]NestTree[If[# > 2, {# - 1, # - 2}, None]&, 6, Infinity, fib]TreeFold[{Tree[Total[TreeData /@ #2], #2]&, RulesTree[1]&}, %]TextElementオブジェクトを木に変換する関数を定義する:
textElementTree[TextElement[{elem_}]] := textElementTree[elem];
textElementTree[te_TextElement] := NestTree[textElementChildren, te, Infinity, textElementData];TextElementの子要素を与える関数を定義する:
textElementChildren[TextElement[elems_List, RepeatedNull[_, 1]]] := elems;
textElementChildren[TextElement[elem_, RepeatedNull[_, 1]]] := {elem};
textElementChildren[text_String] := None;TextElementから"GrammaticalUnit"を抽出する関数を定義する:
textElementData[TextElement[_]] := Null;
textElementData[TextElement[_, prop_]] := CanonicalName[prop["GrammaticalUnit"]];
textElementData[text_String] := text;TextElementを木に変換する:
textElementTree[TextStructure["Time flies like an arrow."]]choice[{_, list_List}] := MapIndexed[{e, pos} |-> {e, Delete[list, pos]}, list]NestTree[choice, {Null, Range[4]}, Infinity, First, IconizedObject[«layout»]]NestTree[Replace[{m_, n_} :> {{m, m + n}, {m + n, n}}], {1, 1}, 3, Replace[{m_, n_} :> m / n]]NestTree[n Replace[ContinuedFraction[n], {as___, a_} :> Sort[FromContinuedFraction /@ {{as, a - 1, 2}, {as, a + 1}}]], 1, 3]特性と関係 (12)
NestListは演算子 f を式に連続的に適用した結果のリストを与える:
NestList[f, x, 3]NestTreeは演算子 f を式に連続的に適用した結果の木を与える:
NestTree[f, x, 3]NestTreeはリストの各要素に連続する演算子を適用する:
NestTree[{f1[#], f2[#]}&, x, 2]NestTree[f,expr,…]は式 expr が木ではない場合は expr から始めて木を構築する:
NestTree[{2#, 2# + 1}&, 1, 3]これはNestTree[f,Tree[expr,None],…]に等しい:
% === NestTree[{2#, 2# + 1}&, [image], 3]f が{…},<|…|>,Hold[…]またはNoneを返さない場合は,NestTree[f,tree,…]はNestTree[List@*f,tree,…]に等しい:
NestTree[f, x]% === NestTree[List @* f, x]NestTree[f,Tree[expr,None],0]はTree[expr,None]を与える:
NestTree[f, expr, 0]f[expr]がNoneを与えるならNestTree[f,Tree[expr,None]]はTree[expr,None]を与える:
NestTree[None&, expr]f[expr]が{…}またはHold[…]を与えるならNestTree[f,Tree[expr,None]]はTree[expr,{…}]を与える:
NestTree[{expr1, expr2, expr3}&, expr]たとえ f[expr]が{}またはHold[]を与える場合でもこれは真である:
NestTree[{}&, expr]NestTreeは,最大レベルに達するまで,あるいは演算子 f がNone,{},<||>またはHold[]を返すまで,連続的に f を適用する:
NestTree[Range[# - 1]&, 5, Infinity]NestTree[f,Tree[expr,None],n,h]は,データ h[expr]と子NestTree[f,Tree[expri,None],n-1,h]を持つ木を返す.ここで,f[expr]は{expr1,expr2,…}を与える:
f[x_] := If[x > 7, {}, {2x, 2x + 1}]NestTree[f, 1, 2, h]% === Tree[h[1], {NestTree[f, 2, 1, h], NestTree[f, 3, 1, h]}]NestTree[TreeChildren,Tree[tree,None],Infinity,TreeData]は tree に等しい:
NestTree[TreeChildren, Tree[[image], None], Infinity, TreeData]NestGraphはグラフの各頂点に演算子を適用する:
NestGraph[Range[2#, 2# + 2]&, [image], VertexLabels -> Automatic]NestTreeは木の各葉に演算子を適用する:
NestTree[Range[2#, 2# + 2]&, [image]]NestTreeを使ってCompleteKaryTreeの出力を模倣する:
CompleteKaryTree[4, 3]NestTree[{Null, Null, Null}&, Null, 3]木を実際のGraphオブジェクトに変換する:
TreeGraph[%]内部の部分木の子1から3の間に0から10までのランダムな整数を含む木を生成する:
SeedRandom[3];NestTree[RandomInteger[10, RandomInteger[{1, 3}]]&, RandomInteger[10], 3]RandomTreeを使って特定の大きさのランダムな木を生成する:
SeedRandom[125];RandomTree[21]考えられる問題 (1)
おもしろい例題 (3)
NestTree[#["Subdivisions"]&, Entity["GeologicalPeriod", "PhanerozoicEon"], 2, TreeElementStyleFunction -> All -> (#["CGMWColor"]&), TreeElementLabelFunction -> All -> CommonName, TreeLayout -> Left, AspectRatio -> 2]シェルピンスキー(Sierpiński)の三角形の第0ステップから第3ステップの三角形を与えるレベルで木を構築する:
NestTree[Array[(1/2) (KroneckerDelta[#1, #3] + KroneckerDelta[#2, #3])&, {3, 3, 3}].#&, CirclePoints@3, 3, IconizedObject[«options»]]この木から第3ステップのシェルピンスキーの三角形を入手する:
TreeFold[{RegionUnion@@#2&, Region @* Triangle}, %]カントール(Cantor)集合の第0ステップから第3ステップまでの区間を与えるレベルで木を構築する:
NestTree[Array[(1/3) (2 KroneckerDelta[#1, #3] + KroneckerDelta[#2, #3])&, {2, 2, 2}].#&, {0, 1}, 3, IconizedObject[«image size»]]TreeFold[{RegionUnion@@#2&, Region @* Interval}, %]テキスト
Wolfram Research (2021), NestTree, Wolfram言語関数, https://reference.wolfram.com/language/ref/NestTree.html (2022年に更新).
CMS
Wolfram Language. 2021. "NestTree." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/ref/NestTree.html.
APA
Wolfram Language. (2021). NestTree. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/NestTree.html
BibTeX
@misc{reference.wolfram_2026_nesttree, author="Wolfram Research", title="{NestTree}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/NestTree.html}", note=[Accessed: 18-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_nesttree, organization={Wolfram Research}, title={NestTree}, year={2022}, url={https://reference.wolfram.com/language/ref/NestTree.html}, note=[Accessed: 18-June-2026]}