Я попытался найти узел дерева с определенным значением в двоичном дереве поиска.
Я использовал рекурсию, но она не сработала.
Я хочу знать, что не так с функцией.
Кто-то сказал, что я должен вернуть функцию, когда я вызываю ее сама по себе.
Это действительно сработало, но я не понимаю почему. Может кто-нибудь объяснить мне, как
рекурсия действительно работает и что, если тип возвращаемого значения void?
Спасибо!
typedef struct node
{
struct node* left;
struct node* right;
int val;
}treeNode;
int searchTree(treeNode *T, int key, treeNode *T1, treeNode** p)
{
if(!T)
{
*p=T1;
return 0;
}
else if(T->val==key)
{
*p=T;
return 1;
}
else if(T->val<key)
{
searchTree(T->right,key,T,p);
}
else
{
searchTree(T->left,key,T,p);
}
return 1;
}