Salve, dovrei scrivere un programma C che verifichi se un albero, rappresentato con una stringa attraverso parentesi tonde, è binario o meno e in caso lo sia scriva a schermo B altrimenti N.
Ho implementato il seguente codice e testandolo ho trovato un caso in cui non funziona, qualcuno mi sa dire dove sia il problema? Grazie!
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char visita(char * s, int i, int n, char b, int c){
while(i<=n&&s[i]!=')'){
if(s[i]=='('){
c = 1;
i = i + 1;
visita (s, i, n, b, 0);
}else{
if(s[i]==')'){
}else{
c = c + 1;
}
}
i = i + 1;
}
if(c>2) {b = 'N';}
return b;
}
int main(int argc, char *argv[])
{
char s[100];
char b = 'B';
int c = 0, n = 0, i = 1;
// trasferimento degli argomenti della linea di comando
strcpy(s, argv[1]);
// calcolo della lunghezza della stringa s
n = strlen(s);
// chiamata della funzione visita che controlla se l'albero è binario
// e stampa del valore di ritorno
printf("%c", visita(s, i, n, b, c));
return 0;
}
L'ho testato con i seguenti alberi ottenendo questi risultati:
1 B
(12) B
(123) N
(1(23)) B
e fin qui sono giusti, ma per l'albero seguente mi rileva che è Binario quando invece Non lo è.
((12)(1(23)3))