私は、Rに制約される単純な問題があります。効率的なバイナリツリーがあります。おもちゃの例が表示されていますhere.
本質的に、私は最大の深さの葉の間で操作を行います(深さの繋がりでは、順序は関係ありません)。私はそれをここに加えましたが、実際にはもっと複雑な式につながっています。
私のコードではRに制限されています。私は他の手段を介してそれを得るのにこの構造は、このコマンドで表すことができます。Rネストされたリストを単純なバイナリツリーとして使用する
testBranch<-list(list(list(list(20,15),40),list(10,30)),5) #Depth of 4
私は最も深いレベルがどの程度深いかを決定するための作業機能を持っていますが、Rでネストされたリストが遠くなるようなされています。どのように効率的にのインデックスを見つけるためにどのように手がかりは、最も深い値にアクセスする?例えば、
testBranch[[1]][[1]][[1]]
上記玩具の例では、私が好きなものを2つの要素を含むリストを、私を与えるだろう。私は
testBranchStep1<-list(list(list(35,40),list(10,30)),5)
:でRで表すことができtoy example,でステップ1に対応するツリーに結果の
indexesOI<-getIndexes(testBranch) testBranch[indexesOI]<-testBranch[indexesOI][1]+testBranch[indexesOI][2] #testBranch now has depth of 3
:私のほかの例を使用して、私は、これを行うことができます必要に応じて、パッケージを使用することができます。私はクラスシステムの経験があまりないので、Rでノードクラス/ dfs全体を書き直すのではない。私はdata.treeを調べましたが、ネストされたリストをデータ構造体に強制的に運ぶことはありませんでした。
あなたが提供できるヘルプは素晴らしいでしょう!急いで作られたASCIIツリーを許してください。私は大部分が独学で、ここでは多くの質問をしていないので、フォーマットを調整する必要がある場合は私にも教えてください!ありがとう!
:
はとして表示します。それ以来もっと多くのことをしてきた私は、私の質問に記載されているように、その深さで葉にパス/インデックスを取得する方法をまだ考え出していない:> _Any手掛かりどのように効率的にインデックスのセットを見つけるために、 ?_すべてのブランチを手作業でループせずにdata.tree構造を利用する方法を知っていますか?私の質問の心は、最も深い葉の位置を知ることに関係しています。これまでにありがとうございました! –
パーフェクト。どうもありがとうございます。何らかの点でネイティブリストを使用するスマートな方法を見つけたいと思っていますが、これは私の目的にとってはうまくいきます!方法を見つけたらすぐに答えとしてマークします。 –