Está en la página 1de 5

/*Una vez construído el árbol anterior se debe construir su árbol espejo.

Árbol
espejo es el que se
construye a partir de uno dado, convirtiendo el subárbol izquierdo en subárbol
derecho y
viceversa*/

#include<stdlib.h>

#include<stdio.h>

#include <iostream>

using namespace std;

struct Nodo

int dato;

Nodo* derecho;

Nodo* izquierdo;

};

Nodo* Crear(int);

void Insertar(Nodo*&, int);

void Mostrar(Nodo*, int);

Nodo *Arbol_espejo(Nodo*);

Nodo* Arbol_binario = NULL;

Nodo *Arbol_binario_espejo = NULL;

Nodo* Convertir_espejo;

int main() {

cout <<
"----------------------------------------------------------------------------------
-----------|\n";

cout << "|...ARBOL BINARIO IN


ORDEN ..................................................................|\n";
cout << "|...ESTA MOSTRADO DE MANERA
HORIZONTAL.......................................................|\n";

cout << "|...LOS ELEMENTOS QUE ESTAN SEGUIDOS POR LA MISMA LINEA DE PUNTOS
VERTICAL QUIERE DECIR QUE..|\n";

cout << "|...ESTAN EN EL MISMO NIVEL Y SEA AMAS FACIL DE COMPRENDER LA


VISIALIZACION DEL ARBOL BINARIO|\n";

cout <<
"|---------------------------------------------------------------------------------
-----------|\n";

int inf, opcion = 0, contador = 0, cont = 0;

int Vect[] = { 14,15,4,9,7,18,3,5,16,4,20,17,9,14,5 };

while (opcion != 4)

cout << "\n";

cout << "------------------------------------------ \n";

cout << "\t ::::::: Menu:::::::::" << endl;

cout << " \t 1. Mostrar Elementos" << endl;

cout << " \t 2. Mostrar Arbol" << endl;

cout << " \t 3. Mostrar Arbol Espejo " << endl;

cout << " \t 4. Salir \n" << endl;

cout << "------------------------------------------ \n";

cout << " opcion: " << endl;

cin >> opcion;

switch (opcion)

case 1:cout << "\n ELEMENTOS QUE SE INSERTARAN EN EL ARBOL BINARIO \n";

for (int m = 0; m < 15; m++) {

Insertar(Arbol_binario, Vect[m]);

cout << " " << Vect[m] << " , ";


}

break;

case 2: if (Arbol_binario == NULL) {

cout <<
"..................................................................................
................\n";

cout << " \t ESTE ARBOL SE GENERA DE MANERA AUTOMATICA AL ELEGIR OPCION
1 (MOSTRAR ELEMENTOS), \n";

cout << "\t SI TE HAS TOPADO CON ESTE MENSAJE ES POR QUE AUN NO HAS
DECIDIDO QUE SE LLENE :( \n";

cout <<
"..................................................................................
................\n";

Mostrar(Arbol_binario, cont);

cout << "\n";

break;

case 3:

for (int m = 0; m < 15; m++) {

Insertar(Arbol_binario, Vect[m]);

cout << " " << Vect[m] << " , ";

Mostrar(Arbol_binario, cont);

Arbol_binario_espejo = Arbol_espejo(Arbol_binario);

Mostrar(Arbol_binario_espejo, cont);

Nodo* Crear(int inf) {

Nodo* nuevo_nodo = new Nodo();


nuevo_nodo->dato = inf;

nuevo_nodo->derecho = NULL;

nuevo_nodo->izquierdo = NULL;

return nuevo_nodo;

void Insertar(Nodo*& Arbol_binario, int inf) {

if (Arbol_binario == NULL) {

Nodo* nuevo_nodo = Crear(inf);

Arbol_binario = nuevo_nodo;

else {

int raiz = Arbol_binario->dato;

if (inf < raiz) {

Insertar(Arbol_binario->izquierdo, inf);

else {

Insertar(Arbol_binario->derecho, inf);

void Mostrar(Nodo* Arbol_binario, int cont) {

if (Arbol_binario != NULL) {
Mostrar(Arbol_binario->derecho, cont + 1);

for (int i = 0; i < cont; i++) {

cout << ". ";

cout << Arbol_binario->dato << endl;

Mostrar(Arbol_binario->izquierdo, cont + 1);

Nodo* Arbol_espejo(Nodo* Arbol_binario) {

if(Arbol_binario != NULL){}

Convertir_espejo = Arbol_binario->izquierdo;

Arbol_binario->izquierdo = Arbol_espejo(Arbol_binario->derecho);

Arbol_binario->derecho = Arbol_espejo(Convertir_espejo);

return Arbol_binario;

También podría gustarte