Binary tree - Scroll and display elements

1

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);   
}
    
asked by anonymous 27.06.2017 / 15:35

0 answers