Construir un arbre binari des de la inversió i el preordenador

#include

#include

#include

Ús de l’espai de noms STD;

// Estructura de dades per emmagatzemar un node d’arbre binari

Node struct

{

tecla int;

node * esquerra, * dreta;

};

// funció per crear un nou node d’arbre binari que ha donat clau

node * newnode (tecla int)

{

node * node = nou node;

node- > clau = clau;

node- > esquerra = node- > dreta = nullptr;

Node de retorn;

}

// funció recursiva per realitzar un recorregut inorder d’un arbre binari

buit inorddertrapersal (node * root )

{

si (root == nullptr)

Tornar;

InortDertrapersal (root- > esquerra);

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

inorddertrapersal (root- > dreta);

}

// Funció recursiva per realitzar un recorregut recurrent d’un arbre binari

void preordertrapersal (node * root)

{

si (root == nullptr)

Retorna;

cout < < root- > clau < < ”;

preordertrapersal (root- > esquerra);

preordertrapersal (root- > );

}

// funció recursiva per construir un arbre binari des de donat

// seqüència de preordenació i preorden

node * Construcció (vector < int > const & inordder, int inici, int, final,

vector < int > const & preorden, int pindex,

unorded_map < int, int > & Mapa)

{

// cas base

si (inici > final )

retorn nullptr;

// El següent element de preordenació serà el node arrel de subárbol

// format per inorder

Node * root = newnode (preorder);

// Obteniu l’índex de node root a l’inici per determinar el

// límit del subarbre esquerre i dret

int index = mapa;

// Construir recursivament el subarbre esquerre

root- > esquerra = construcció (inordenta, inici, Índex – 1, preorden, Pindex, Mapa);

// Construeix recursivament el subárbol de la dreta

root- > dreta = construcció ( Inorder, índex + 1, final, preorden, pindex, mapa);

// Tornar node actual

Retor de retorn;

}

// Construir un arbre binari de recorreguts de preordenació i preorden

// Aquesta funció assumeix S que l’entrada és vàlida

// és a dir, la seqüència d’inordenta i preordenació forma un arbre binari

Node * Construct (vector < int > const & inorder, vector < int > const & preorden)

{

// Obteniu el nombre de nodes a l’arbre

int n = inorder.size ();

// Creeu un mapa per trobar eficaçment l’índex de qualsevol element a

// donat seqüència d’inordentació

unorded_map < int, int > mapa;

per (int i = 0; i < n; I ++)

mapa] = i;

// pindex botigues Índex del node següent no processat en seqüència de preorden

// Inicieu amb el node root (present a 0 Índex)

int pindex = 0;

Construcció de retorn (inordenta, 0, n – 1, preorden, pindex, mapa);

}

// Funció principal

int Main ()

{

/ * Penseu per sota de l’arbre

2 3

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *