Ir ao conteúdo
  • Cadastre-se

Ajuda simples para imprimir uma árvore binária


Sudistano

Posts recomendados

Buenas senhores,

 

Seguinte, estou fazendo um código para árvore binária, a estrutura dele está pronta só estou com dificuldades para conseguir imprimir.

Preciso saber a função que imprime os conteúdos de uma árvore binária com recuos de margem proporcionais à profundidade do nó na árvore.

 

Por exemplo, a árvore:

0NqRM9z.png

 

Obs.: os '--' são os valores nulos.

 

Segue o código que fiz:

 

void ImprimirPreOrder (No *p)

{

if (p)

{

cout << p->info; ImprimirPreOrder(p->esq);

ImprimirPreOrder(p->dir);

}

}

 

typedef struct no {

int info;

struct no *dir, *esq;

};

 

No *criaNo (int x)

{

No *p = new No;

p->esq = NULL;

p->dir = NULL;

p->info = x;

return p;

}

 

void InsereEsquerda(No *p, int x)

{

No *q = criaNo(x);

p->esq = q;

}

void InsereDireita(No *p, int x)

{

No *q = criaNo(x);

p->dir = q;

 

}

 

void main()

{

No *raiz, *p, *q;

string linha;

int num;

int continua = 1;

int primeiro = 1;

 

while(continua)

{

cout << "Entre com um valor, s para finalizar " << endl;

cin >> linha; if (linha == "s")

{

continua = 0; continue;

}

stringstream sstemp(linha); sstemp >> num;

if (primeiro)

{

raiz = criaNo(num);

primeiro = 0;

}

else

{

q = raiz;

p = raiz;

while (num != p->info && q != NULL) {

p = q;

if (num < p->info)

q = p->esq; else

q = p->dir;

}

if (num == p->info)

cout << "O numero " << num << " ja existe na arvore" << endl;

else { if (num < p->info) InsereEsquerda(p, num);

else

InsereDireita(p, num);

}

}

}

getchar();

}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...