-3

次のように AVLtree を印刷しようとしています。

. 50

55

. . 60

. 65

. . 70

– ノードのエントリの前には、深さの数のドットを付ける必要があります。深さは、ツリー内のノードの深さを示します。

ルートには 55 が含まれ、左側の子には 50 が含まれ、右側の子には 65 が含まれ、右側の左側の子には 60 が含まれ、右側と右側の子には 70 が含まれます。

以下はこれまでの私のコードです。誰でも助けることができますか?

public string Display() {
    StringBulder sb= new StringBulder();
    inOrder (node,1,sb);
    return sb.toString();
}

// inorder traversal
public void inOrder (AVLNode<E> node, int depth, StringBuilde sb) {
    for (int i=1;i < depth; i++){
        sb.append(".");
    }

    if(node == null) return;

    inOrder(node.getleft(), depth+1,sb);
    sb.append(node.data);
    inOrder(node.getright(),depth+1,sb); 
}
4

2 に答える 2

1

それはとても簡単です。左右のノードの深さを 1 ずつ増やし、深さのドット数を に追加しますsb。次に、データを追加します。これを再帰的に行います。

于 2012-04-07T05:10:13.367 に答える
1

コードは次のとおりです。

void inOrder(AVLNode node, int depth, StringBuilder sb)
{
  if(node == null) return;

  inOrder(node.left, depth+1, sb);

  for(int a=0;a<depth;a++) sb.append(".");
  sb.append(node.data + "\n");

  inOrder(node.right, depth+1, sb);

}
于 2012-04-07T05:12:37.673 に答える