I would like to know how to go through and display the values of the tree in post order, I tried several ways and I could not.
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
struct arvore {
int x;
arvore *dir;
arvore *esq;
};
struct pilha {
arvore *num;
pilha *prox;
};
int main() {
arvore *raiz;
arvore *aux;
arvore *novo;
pilha *topo;
pilha *aux_pilha;
int op;
bool flag;
raiz = new arvore();
raiz = NULL;
do {
cout << "1 - Inserir na árvore binária" << endl;
cout << "2 - Exibir árvore em ordem" << endl;
cout << "3 - Exibir árvore em pre ordem" << endl;
cout << "4 - Exibir árvore em pos ordem" << endl;
cout << "5 - Sair" << endl;
cout << "Opção: ";
cin >> op;
if (op == 1) {
cout << "Inserir na árvore binária ..." <<endl;
cout << "Digite o valor: " <<endl;
novo = new arvore();
cin >> novo -> x;
novo -> dir = NULL;
novo -> esq = NULL;
cout << "Valor "<< novo -> x <<" adicionado na arvore "<<endl;
if(raiz == NULL) {
raiz = novo;
} else {
flag = false;
aux = raiz;
while(flag == false) {
if(novo -> x >= aux -> x) {
if (aux -> dir == NULL) {
aux -> dir = novo;
flag = true;
} else {
aux = aux -> dir;
}
} else {
if (aux -> esq == NULL) {
aux -> esq = novo;
flag = true;
} else {
aux = aux -> esq;
}
}
}
}
} else if (op == 2) {
if (raiz == NULL){
cout << " Arvore vazia " <<endl;
}else {
cout <<"Exibindo os valores na árvore em ordem..." <<endl;
aux = raiz;
topo = NULL;
do {
while(aux != NULL) {
aux_pilha = new pilha();
aux_pilha -> num = aux;
aux_pilha -> prox = topo;
topo = aux_pilha;
aux = aux -> esq;
}
if(topo != NULL) {
aux_pilha = topo;
cout << aux_pilha -> num -> x << " ";
aux = topo -> num -> dir;
topo = topo -> prox;
}
} while(topo != NULL or aux != NULL);
}
cout << endl;
} else if (op == 3) {
cout << "Exibindo os valores na arvore em pre ordem... " <<endl;
if (raiz == NULL ){
cout << "Arvore vazia " <<endl;
}else {
aux = raiz;
while(aux != NULL ) {
aux_pilha = new pilha();
aux_pilha -> num = aux;
aux_pilha -> prox = topo;
topo = aux_pilha;
aux = aux ->dir;
cout << aux_pilha -> num -> x << " ";
topo = topo -> prox;
}
if(topo != NULL) {
aux_pilha = topo;
cout << aux_pilha -> num -> x << " ";
aux = topo -> num -> esq;
topo = topo -> prox;
}
}
cout <<endl;
} else if (op == 4) {
cout << "Exibindo os valores na arvore em pos ordem... " <<endl;
aux = raiz ;
topo = NULL;
if(raiz == NULL){
cout << "Arvore vazia "<<endl;
}else{
while (aux != NULL ){
}
}
cout <<endl;
}else if (op == 5){
cout << "Até mais obrigado !" << endl;
} else {
cout << "Opção Inválida!" << endl;
}
} while(op != 5);
}