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;
}
}
}
}
}
我试图在第一次打印后立即终止这个递归函数。我最初的想法是传入一个十进制指针 'val' 并在我想终止函数时将其设置为 1。思考过程是它会更改函数外部的值,因此所有先前的调用都将具有更新的指针,但我不认为这就是它在此设置中的工作方式。
此函数通过二叉树搜索 Post Orderly。