- ベストアンサー
配列をある決まった順に表示させたい
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 となります。 よろしくお願いします。
- みんなの回答 (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]); }
その他の回答 (1)
- salsberry
- ベストアンサー率69% (495/711)
こんなもんかな。 #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; }
お礼
ありがとうございます! この表示方法をさせるためにもうすでに10時間以上もいろいろなことを試していたのですごく助かりました 本当にありがとうございました!
お礼
修正ありがとうございます