Qualcuno potrebbe gentilmente aiutarmi a chiarire dei dubbi,sul comportamento di queste due funzioni.Sicuramente omettendo l'else il return finale viene eseguito sempre,ma non riesco a capire bene come si comporta la funzione,nel caso in cui entra nell'if precedente dove n<radice.In quel caso chiama la funzione con i nuovi paramatri e poi esegue l'ultimo return??

codice:
Node* findNode(InfoType n,Node* tree){
if(!tree) return 0;                                         //albero vuoto
if(n==tree->label)return tree;                         //n==radice
if(n<tree->label) return findNode(n,tree->left);  //n<radice
return findNode(n,tree->right);                       //n>radice
}
diverso da ..
codice:
Node* findNode(InfoType n,Node* tree){
if(!tree) return 0;                                         //albero vuoto
if(n==tree->label)return tree;                         //n==radice
if(n<tree->label) {return findNode(n,tree->left);}  //n<radice
else{
         return findNode(n,tree->right); }                      //n>radice
}
grazie!!