0

関数の実装を理解するのに少し問題があります。

基本的に、ネストされたリストがあり、次のように表示する必要があります。

Root 
  -RItem1
      --Item1
      --RRItem2
         --Item1
         --Item2
  -RItem2
      --RRItem1
          -Item1
          -Item2
      --Item2

実行時にデータを取得することに注意してください。アイテムにはアイテム、アイテムにはアイテムなどがあります。

基本的に、これをどのようにプログラムするのでしょうか? 再帰関数が最適であることはわかっていますが、問題が発生しています。具体的には、アイテムの座標を考慮するのに苦労しています。

これは実装に関する質問なので、言語は重要ではありません。

4

3 に答える 3

3

再帰関数は良い方法です。「レベル」を引数として渡す必要があります。そのようなもの(疑似Java / Javascript):

function display(item, level) {
   printlnAtLevel(level,item.name)
   if item.hasChildren() {
      foreach(child : item.children) {
          display(child,level+1)
      }
   }
}
display(root,0)
于 2013-04-28T12:11:00.770 に答える
1

(x,y) を使用して別の回答を投稿します。

 function display(item, x, y) {
  print(x,y,item.name)
  if item.hasChildren() {
    yTemp = y + 1 
    foreach(child : item.children) {
      display(child,x+1,yTemp++)
   }
  }
 }
 display(root,0,0)
于 2013-04-28T13:33:02.950 に答える