/ / Archivia tutti i puntatori del nodo in una matrice di puntatori per l'albero di ricerca binario: puntatori, strutture dati, albero, albero binario, albero di ricerca binaria

Memorizza tutti i puntatori di nodi in una serie di puntatori per l'albero di ricerca binario: puntatori, strutture dati, albero, albero binario, albero di ricerca binaria

Recentemente stavo cercando di manipolare il binarioalbero di ricerca e rimasto bloccato qui. Voglio avere un array (array di puntatori) all'interno del quale voglio memorizzare i puntatori di ogni nodo dell'albero di ricerca binario in modo ordinato. NON HO BISOGNO DEL VALORE DI OGNI NODO Ho bisogno dei puntatori in modo che io possa accedere al loro valore, sottostruttura sinistra e sottoalbero destro. Quello che ho fatto è

struct node{
int key;
struct node *left, *right;
};

node **arr;
int x=0;

void inorder(struct node *root){
if (root != NULL){
inorder(root->left);

//cout<<"X : "<<x<<endl;
arr[x] = root;
x++;
printf("%d n", root->key);
inorder(root->right);
}
}

Per favore aiuto. Grazie.

risposte:

0 per risposta № 1

È possibile farlo, ma se ordinati array di nodii puntatori soddisfano le tue esigenze, quindi non è necessario un albero di ricerca binario: puoi eseguire la ricerca binaria sull'array.Questa struttura dati ha la stessa velocità di accesso di un albero (può essere anche leggermente più veloce perché i dati sono compressi in memoria) ed è molto efficiente in termini di memoria, ma l'inserimento di nuovi dati è costoso: o (n). Quindi questa soluzione non è appropriata se sono previsti molti inserimenti, ma in questo caso mantenendo tale array si perdono tutti i benefici della struttura ad albero.