tipos recursivo grado estructura datos completo clasificacion binario arios arboles arbol altura c segmentation-fault binary-tree

recursivo - Error de segmentación en el código para encontrar(en orden) el sucesor de los nodos en el árbol binario



grado de un arbol (1)

Considera este fragmento:

if(xptr!=NULL) { printf(" %d is the successor of %d/n",a->x,xptr->x); } else printf("%d is the scuccessor of no one/n",xptr->x);

siempre que xptr sea null , el control ingresa a la parte else e intenta imprimir xptr->x que está xptr->x un puntero nulo ( null->x ). De ahí la falla de segmentación.

Creo que escribiste esto por error:

printf("%d is the successor of no one/n",xptr->x);

que en mi opinión debería ser:

printf("%d is the successor of no one/n",a->x);

Estaba tratando de encontrar / imprimir el sucesor inorder de cada nodo en un árbol binario pero el compilador me está dando un fallo de segmentación como resultado.

Aquí está la estructura:

struct node { int x; struct node *left; struct node *right; };

Condición inicial:

Pasé la raíz del árbol como a (en succ() ) y puntero NULL como b .

Aquí está mi código para imprimir / encontrar el sucesor:

struct node *(succ(struct node *a,struct node *b)) { struct node *xptr; xptr=b; if(a!=NULL) { xptr=succ(a->left,xptr); if(xptr!=NULL) { printf(" %d is the successor of %d/n",a->x,xptr->x); } else printf("%d is the successor of no one/n",xptr->x); xptr=a; if(xptr->right==NULL) { return xptr; } xptr=succ(a->right,xptr); return xptr; } else return xptr; }

He probado el resto del código (construyendo el árbol) y está funcionando bien.