Innanzitutto ho un problema col seguente programma:


codice:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>

/* INIZIO DICHIARAZIONE */

typedef char parola[20];

struct albero{
        parola p;
        albero * ptsx;
        albero * ptdx;
};
albero * radice;

parola par;
char risp;

void inserisci_in_albero(albero*,parola);
int regola(parola,parola);

/* FINE DICHIARAZIONE */


int main(){
     do{
        cout<<"\nInserire una parola : ";
        cin>>par;
        inserisci_in_albero(radice,par);
        cout<<"\nVuoi inserire una nuova parola (s/n) ? ";
        cin>>risp;
     }while(risp=='s');
     getch();
     return 0;
}


void inserisci_in_albero(albero * ax, parola px){
             if(ax==NULL){
                   ax=new(albero);
                   ax->p=px; 
                   ax->ptsx=NULL;
                   ax->ptdx=NULL;
             }
             else{
                   if(regola(ax->p,px))
                         inserisci_in_albero(ax->ptsx,px);
                   else
                         inserisci_in_albero(ax->ptdx,px);
             }
}


int regola(parola par_nodo, parola py){
       char r;
             cout<<"\nLa parola " <<py <<" la vuoi inserire alla destra o alla sinistra del nodo la cui parola e' " <<par_nodo <<" (s/d) ? ";
             cin>>r;
             if(r=='s')
                  return 1;
             else
                  return 0;
}
Perchè mi da errore alla riga colorata di rosso dicendomi che non può effettuare un assegnamento da char+ a char[20] ???
Sia ax->p che px sono di tipo parola, cioè un tipo che ho costruito col typedef e definisce un vettore di caratteri di 20 elementi...


Poi mi sono accorto che la procdeura ricorsiva inserisci_in_albero nn funge e nn mi carica l'albero...qual è la procedura che mi permette di carica un albero con la ricorsione?