Devo stampare i nodi di un albero binario utilizzando l'attraversamento di ordine di livello ma a spirale i nodi di livello diverso devono essere stampati a spirale.attraversamento ordine di livello di stampa dell'albero binario in modo Zigzag
per esempio: Se l'albero assomigliare:
L'uscita dovrebbe essere 10 5 20 25 15 6 4.
L'algoritmo i utilizzata è semplice ed è solo una piccola variazione di livello trasversale. Ho appena preso una variabile p.if la variabile è uguale a 1 di stampare l'ordine a un dato livello da sinistra a destra, se è -1 stampa da destra a sinistra.
void getlevel(struct node *root,int n,int p)
{
if(root==NULL)
return;
if(n==0)
{
printf("%d ",root->info);
return;
}
if(n>0)
{
if(p==1)
{
getlevel(root->left,n-1,p);
getlevel(root->right,n-1,p);
}
if(p==-1)
{
getlevel(root->right,n-1,p);
getlevel(root->left,n-1,p);
}
}
}
sto ottenendo la risposta, ma il caso peggiore complessità è probabilmente O (n^2) in caso di albero distorta.
Ci può essere un algoritmo migliore per questo compito? ..
mio intero programma è here
Beh possiamo fare meglio, controllare questo qui http://techieme.in/spiral-traversal/. Ci sono diversi modi per risolvere questo problema. – dharam