Ciao a tutti...ho un problema con un esercizio.
Devo scrivere un codice che prende in input due numeri N e K.
ho due ABR ciascuno di N elementi e in cui è presente K.
il programma deve stampare 1 se il percorso che dalla radice porta a K è lo stesso nei due alberi, 0 se è diverso.
Avevo pensato a una cosa del genere, però mi restituisce sempre zero come output....qualcuno può darmi una mano?? grazie
#include<stdio.h>
#include<stdlib.h>
typedef struct _node{
int key;
struct _node *left;
struct _node *right;
} node;
node* insertRec(node *tree, int input){
if(tree==NULL){
node *new=(node*) malloc(sizeof(node));
new->key=input;
new->left=NULL;
new->right=NULL;
return new;
}
if(tree->key > input) tree->left=insertRec(tree->left, input);
else tree->right=insertRec(tree->right, input);
return tree;
}
int compare(node *tree1, node *tree2, int k){
if(tree1==NULL) return 0;
if(tree2==NULL) return 0;
if(tree1->key != tree2->key) return 0;
else{
if(tree1->key==k) return 1;
else{
if(tree1->key > k) compare(tree1->left, tree2->left, k);
else compare(tree1->right, tree2->right, k);
}
}
}
main(){
int n, k, i, j, input;
node *treeA, *treeB;
scanf("%d %d", &n, &k);
for(i=0; i<n; i++){
scanf("%d", &input);
treeA=insertRec(treeA, input);
}
for(j=0; j<n; j++){
scanf("%d", &input);
treeB=insertRec(treeB, input);
}
int cmp=compare(treeA, treeB, k);
printf("%d\n", cmp);
return 0;
}