• ベストアンサー

配列をある決まった順に表示させたい

c言語でint型の配列をきまった形で表示させるようにしたいです。 例えば配列の内容が8 7 3 2 5 1であったときは [ 8 [ 7 2 5 ] [ 3 1 _ ] ]と表示させたいのです。 この表示は      8    / \   7     3  / \  / 2    5 1 このような左から順に埋めていった2分木を表しています。 8 7 3なら [8 7 3]      8    / \   7     3 となります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

空白の入れ方を修正。 void printTree(int *data, int idx, int arrayLength) { if (idx*2+1 < arrayLength) { printf("[ %d ", data[idx]); printTree(data, idx*2+1, arrayLength); printf(" "); if (idx*2+2 < arrayLength) printTree(data, idx*2+2, arrayLength); else printf("-", data[idx]); printf(" ]"); } else printf("%d", data[idx]); }

kagari321
質問者

お礼

修正ありがとうございます

その他の回答 (1)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

こんなもんかな。 #include <stdio.h> void printTree(int *data, int idx, int arrayLength) { if (idx*2+1 < arrayLength) { printf("[ "); printf("%d ", data[idx]); printTree(data, idx*2+1, arrayLength); if (idx*2+2 < arrayLength) printTree(data, idx*2+2, arrayLength); else printf("- ", data[idx]); printf("] "); } else printf("%d ", data[idx]); } int main() { int data[] = { 8, 7, 3, 2, 5, 1 }; printTree(data, 0, sizeof(data)/sizeof(int)); printf("\n"); return 0; }

kagari321
質問者

お礼

ありがとうございます! この表示方法をさせるためにもうすでに10時間以上もいろいろなことを試していたのですごく助かりました 本当にありがとうございました!

関連するQ&A

専門家に質問してみよう