Costruisci un albero binario da Inorder e Preorder Traversal

#include

#include

#include

Utilizzo dello spazio dei nomi std;

// Struttura dei dati per memorizzare un nodo albero binario

Struct nodo

{

INT Chiave;

Nodo * Sinistra, * Destra;

};

// Funzione per creare un nuovo nodo albero binario che ha dato la chiave

nodo * newnode (tasto int)

{

nodo * nodo = nodo nuovo;

node- > tasto = tasto;

nodo- > sinistra = nodo- > destra = nullpr;

Nodo di ritorno;

}

}

// Funzione ricorsiva per eseguire Traversal inordinaria di un albero binario

Void inOrderTraversal (nodo * radice )

{

if (root == nullptr)

return;

inordertraversal (root- > a sinistra);

cout < < root- > ke y < < ”;

INORDERRAVERSAL (root- > Destra);

}

}

// Funzione ricorsiva per eseguire Postorder Traversal di un albero binario

Void Preordertraversal (nodo * root)

{

if (root == nullptr)

return;

cout < < root- > tasto < < ”;

preordertraversal (root- > a sinistra);

preordertraversal (root- > Destra );

}

// funzione ricorsiva per costruire un albero binario dalla data specificata

// inosservazione e sequenza preordinabile

nodo * Costruct (vector < int > cost & inorder, int-part, int End,

Vector < int > cost & preordine, int

preorder id = “B79 2411610 “>

Pindex,

UNORDED_MAP < INT, INT > & mappa)

{

// caso base

se (avvia > fine )

return nullptr;

// Il prossimo elemento nel preordine sarà il nodo root del sottostruttore

// formato da inordinatore

Nodo * root = newnode (preordine);

// Ottieni l’indice del nodo root in Inorder per determinare il confine

// del sottoteso di sinistra e destra

INT INDICE = Mappa;

// Costruisci ricorsivamente la sottostruttura sinistra

root- > sinistra = costrutto (inordinata, inizio, indice – 1, preorder, pindex, mappa);

// costruire ricorsivamente la sottostruttura destra

root- > destra = costrutto ( inorder, indice + 1, fine, preordine, pindex, mappa);

// ritorno nodo corrente

return root;

}

// Costruisci un albero binario da Inorder e PREORDERS Traversals

// Questa funzione assume s che l’input è valido

// IE date sequence inordiner e preordinato forma un albero binario

nodo * costrutto (vettoriale < int > cost & inorder, vector < int > cost & preordine)

{

// ottenere il numero di nodi nell’albero

int n = inorder.size ();

// Creare una mappa per trovare in modo efficiente l’indice di qualsiasi elemento in

// data sequenza inordinata

burroded_map < INT, INT > Mappa;

per (int I = 0; I < N; I ++)

map] = i;

// Peldex memorizza indice del prossimo nodo non trasformato in sequenza preordinabile

// Avvia con nodo root (presente a 0 ‘TH INDICE)

int Pindex = 0;

Costrutto di ritorno (inordinaria, 0, n – 1, preordine, pindex, mappa);

}

// funzione principale

int main ()

{

/ * Considera sotto l’albero

2 3

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *