Recorrido de un árbol en PostOrden en C++ [128]
En un recorrido de un árbol en PostOrden en C++, realizamos recursivamente recorridos en postorden del subárbol izquierdo y del subárbol derecho seguidos de una visita al nodo raíz.
- Atravesamos el sub-árbol izquierdo.
- Atravesamos el sub-árbol derecho.
- Visitamos la raíz.
Codigo: https://github.com/programadornovato/c-/commit/05e86e48838e3d5c22fdf7a873b43c7577995639
#include <iostream>
struct Nodo{
int dato;
Nodo *izq;
Nodo *der;
};
Nodo *arbol=NULL;
Nodo *crearNodo(int dato);
void insertarNodo(Nodo *&arbol,int dato);
void mostrarArbol(Nodo *&arbol,int cont);
bool buscarNodoArbol(Nodo *&arbol,int numBuscar);
void preorden(Nodo *&arbol);
void inorden(Nodo *&arbol);
void postorden(Nodo *&arbol);
void menu();
int main(){
menu();
system("pause");
return 0;
}
void menu(){
int opcion,dato;
regresaMenu:
system("cls");
std::cout<<"\tMENU\n";
std::cout<<"1.- Insertar un nodo\n";
std::cout<<"2.- Mostrar arbol\n";
std::cout<<"3.- Buscar un nodo en el arbol\n";
std::cout<<"4.- Mostrar arbol en preorden\n";
std::cout<<"5.- Mostrar arbol en inorden\n";
std::cout<<"6.- Mostrar arbol en postorden\n";
std::cout<<"7.- Salir\n";
std::cout<<"Humano ingresa una opcion:";
std::cin>>opcion;
switch (opcion)
{
case 1:
std::cout<<"Ingresa el numero del nodo a insertar:";
std::cin>>dato;
insertarNodo(arbol,dato);
system("pause");
goto regresaMenu;
break;
case 2:
std::cout<<"\n\tARBOL\n";
mostrarArbol(arbol,0);
std::cout<<"\n";
system("pause");
goto regresaMenu;
break;
case 3:
std::cout<<"Ingrese el numero a buscar en el arbol:";
std::cin>>dato;
if(buscarNodoArbol(arbol,dato)==true){
std::cout<<"El dato "<<dato<<" si se encontro en el arbol\n";
}else{
std::cout<<"El dato "<<dato<<" no se encontro en el arbol\n";
}
system("pause");
goto regresaMenu;
break;
case 4:
std::cout<<"\t ARBOL EN PREORDEN\n";
preorden(arbol);
std::cout<<"\n";
system("pause");
goto regresaMenu;
break;
case 5:
std::cout<<"\t ARBOL EN INORDEN\n";
inorden(arbol);
std::cout<<"\n";
system("pause");
goto regresaMenu;
break;
case 6:
std::cout<<"\t ARBOL EN POSTORDEN\n";
postorden(arbol);
std::cout<<"\n";
system("pause");
goto regresaMenu;
break;
default:
return;
break;
}
}
Nodo *crearNodo(int dato){
Nodo *nuevoNodo=new Nodo();
nuevoNodo->dato=dato;
nuevoNodo->izq=NULL;
nuevoNodo->der=NULL;
}
void insertarNodo(Nodo *&arbol,int dato){
if(arbol==NULL){
Nodo *nuevoNodo=crearNodo(dato);
arbol=nuevoNodo;
}else{
int valorRaiz=arbol->dato;
if(dato<valorRaiz){
insertarNodo(arbol->izq,dato);
}else{
insertarNodo(arbol->der,dato);
}
}
}
void mostrarArbol(Nodo *&arbol,int cont){
if(arbol==NULL){
return;
}else{
mostrarArbol(arbol->der,cont+1);
for (int i = 0; i < cont; i++)
{
std::cout<<" ";
}
std::cout<<arbol->dato<<"\n";
mostrarArbol(arbol->izq,cont+1);
}
}
bool buscarNodoArbol(Nodo *&arbol,int numBuscar){
if(arbol==NULL){
return false;
}else if(arbol->dato==numBuscar){
return true;
}else if(numBuscar<arbol->dato){
return buscarNodoArbol(arbol->izq,numBuscar);
}else{
return buscarNodoArbol(arbol->der,numBuscar);
}
}
void preorden(Nodo *&arbol){
if(arbol==NULL){
return;
}else{
std::cout<<arbol->dato<<" - ";
preorden(arbol->izq);
preorden(arbol->der);
}
}
void inorden(Nodo *&arbol){
if(arbol==NULL){
return;
}else{
inorden(arbol->izq);
std::cout<<arbol->dato<<" - ";
inorden(arbol->der);
}
}
void postorden(Nodo *&arbol){
if(arbol==NULL){
return;
}
else{
postorden(arbol->izq);
postorden(arbol->der);
std::cout<<arbol->dato<<" - ";
}
}
🎦 [Curso] Visual Studio Code 🆚 de 0 a 100: https://www.youtube.com/playlist?list=PLCTD_CpMeEKQbdlT8efsS-veXuvYZ1UWn
📦 Descargar zip con todos los codigos: http://raboninco.com/bXZK
🎦 [CURSO] C++ DE 0 A HEROE: https://www.youtube.com/playlist?list=PLCTD_CpMeEKTofxs7iottRxJ5YPM7BOcc
🎦 [Curso] Visual Studio Code 🆚 de 0 a 100: https://www.youtube.com/playlist?list=PLCTD_CpMeEKQbdlT8efsS-veXuvYZ1UWn
Gracias por apoyar este canal: https://www.patreon.com/programadornovato
🔗 Facebook: https://facebook.com/ProgramadorNovatoOficial
🔗 Twitter: https://twitter.com/programadornova
🔗 Linkedin: https://www.linkedin.com/in/programadornovato/
🔗 Instagram: https://www.instagram.com/programadornovato/
🔗 Pagina oficial: https://www.programadornovato.com
<<Anterior tutorial Siguiente tutorial >>