int postOrder(struct node* root, char organ[], char bt[], int* val){
if(root != NULL) {
postOrder(root->left, organ, bt, val);
postOrder(root->right, organ, bt, val);
if(strcmp(root->organ.organname, organ) == 0){
if(strcmp(root->organ.bloodtype, bt) == 0){
if(val == 0){
printf("%s\n", root->organ.name);
val = 1;
}
}
}
}
}
最初の印刷の直後にこの再帰関数を終了しようとしています。私の最初のアイデアは、10 進ポインタ 'val' を渡し、関数を終了したいときにそれを 1 に設定することでした。思考プロセスは、関数の外部で値を変更するため、以前のすべての呼び出しでポインターが更新されますが、このセットアップではそれがどのように機能するとは思いません。
この関数は、Post Orderly をバイナリ ツリーで検索します。