0
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 をバイナリ ツリーで検索します。

4

3 に答える 3