c言語の問題を解いてほしいです 市のデータを要素とする構造体を定義し、6 つの市を作り、各市をノードとする二分探索木を作成して 操作できるようにしたプログラムを考える。構造体の要素は市の名前、人口、構造体を自己参照するポインタで、 Hiratsuka、Odawara、Yokosuka、Kamakura、Chigasaki、Fujisawa の構造体を定義する。ルートノードは、構造 体へのポインタ root で指定する。未完成プログラムを以下に示す #include <stdio.h> struct cTreeNode { char name[20]; int population; struct cTreeNode *left; struct cTreeNode *right; }; void printCTree(int indent, struct cTreeNode *s); void turnoverCTree(struct cTreeNode *s); int main(){ struct cTreeNode c1 = {"Hiratsuka", 258, NULL, NULL}, c2 = {"Odawara", 190, NULL, NULL}, c3 = {"Yokosuka", 396, NULL, NULL}, c4 = {"Kamakura", 172, NULL, NULL}, c5 = {"Chigasaki", 242, NULL, NULL}, c6 = {"Fujisawa", 434, NULL, NULL}; struct cTreeNode *root = NULL; root = &c1; c1.left = &c2; c1.right = &c3; c2.left = &c4; c2.right = &c5; c3.right = &c6; printf("Original: ¥n"); printCTree(0, root); printf("Turnover: ¥n"); turnoverCTree(root); printCTree(0, root); return 0; } void printCTree(int indent, struct cTreeNode *ct){ int i; if (ct == NULL) { for (i = 0; i < indent; i++) printf(" "); printf("NULL¥n"); } else { printCTree(indent + 5, /* ここを作成 */); 2 for (i = 0; i < indent; i++) printf(" "); printf("(%-10s: population = %3d)¥n", ct->name, ct->population); printCTree(indent + 5, /* ここを作成 */); } } 問題: 関数 printCTree() を完成させるとともに、実行例のように、二分木の左右を反転させる関数 turnoverCTree () を作成せよ。ただし、root だけでなく辿れる子孫の木も反転させること。関数は指定したプロトタイプに従い、 下記の実行結果が得られることを確認せよ。 [実行例] Original: NULL (Kamakura : population = 172) NULL (Odawara : population = 190) NULL (Chigasaki : population = 242) NULL (Hiratsuka : population = 258) NULL (Yokosuka : population = 396) NULL (Fujisawa : population = 434) NULL Turnover: NULL (Fujisawa : population = 434) NULL (Yokosuka : population = 396) NULL (Hiratsuka : population = 258) NULL (Chigasaki : population = 242) NULL (Odawara : population = 190) NULL (Kamakura : population = 172) NULL
C言語関連