Construa uma árvore binária de inorder e preorder travessia

#include

#include

#include

Usando o namespace std;

// estrutura de dados para armazenar um nó de árvore binário

nó Struct

{

tecla int;

nó * esquerda, * direita;

};

// função para criar um novo nó de árvore binário tendo dado a chave

Nó * NewNode * NewNode (INT Tecla)

{

nó * nó = novo nó;

nó- > tecla = tecla;

nó- > left = nó- > direita = nullptr;

nó de retorno;

}

// função recursiva para executar a travessia de inorder de uma árvore binária

void inordertraversal (nó * raiz )

{

se (root == nullptr)

retorno;

inordertraversal (root- > resto);

cout < root- > ke y < < ”;

inordertraversal (root- > à direita);

}

// função recursiva para executar o postal travessia de uma árvore binária

Void Preordertraversal (raiz do nó *)

{

se (root == nullptr)

retorno;

cout < < Root- > tecla < < ”;

Preordertraversal (root- > deixado);

pré-encordertraversal (root- > direito );

}

// função recursiva para construir uma árvore binária de determinada

// inorder e preorder sequência

nó * construir (vector < int > const & inorder, int start,

Vector < int > Const & Preorder, int Pindex,

Unourdered_map < int, int > & Mapa)

{

se (iniciar > final

retorna nullptr;

// o próximo elemento no pré-encomenda será o nó raiz da subárvore

// formado por inorder

Nó * raiz = newnode (pré-encomenda);

// receba o índice de nó raiz no inorder para determinar o limite

// da subárvore esquerda e direita

Int Index = Mapa;

// Recursivamente Construa a subárvore esquerda

root- > Esquerda = construção (inorder, iniciar, Índice – 1, Preorder, Pindex, Mapa);

// Recursivamente Construa a subárvore direita

root- > Direita = construção ( inorder, índice + 1, fim, pré-encomenda, pinhex, mapa);

// retorna o nó atual

root de retorno;

}

}

// Construa uma árvore binária das travessuras de inorder e pré-encomenda

// Esta função assume s que a entrada é válida

// ie de que a sequência de inorder e pré-enchimento forma uma árvore binária

nó * construct (vector < int > Id ID = “B792411610″>

inorder, vector int > Const & pré-encomenda)

{

// Obtenha o número de nós na árvore

int n = inorder.size ();

// crie um mapa para encontrar eficientemente o índice de qualquer elemento em

// dada a sequência inorder

underdered_map < int, int > mapa;

para (int i = 0; Eu n; i ++)

mapa] = i;

// pindex armazena índice do nó improvisado próximo na sequência Preorder

// começa com nó raiz (presente em 0 ‘TH Índice)

int pindex = 0;

devolução de retorno (inorder, 0, n – 1, pré-encomenda, pinhex, mapa);

}

// função principal

int main ()

{

/ * considera abaixo a árvore

2 3

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *