0% encontró este documento útil (0 votos)
49 vistas3 páginas

Recorrido InOrden en Árbol Binario C++

Este documento describe cómo realizar un recorrido inorden en un árbol binario. Primero, se cargan nodos genéricos en el árbol de forma iterativa insertando valores. Luego, se muestra el recorrido inorden mediante el uso de una pila para almacenar nodos a medida que se descienden por la rama izquierda, y se imprimen los nodos al regresar de la rama derecha.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
49 vistas3 páginas

Recorrido InOrden en Árbol Binario C++

Este documento describe cómo realizar un recorrido inorden en un árbol binario. Primero, se cargan nodos genéricos en el árbol de forma iterativa insertando valores. Luego, se muestra el recorrido inorden mediante el uso de una pila para almacenar nodos a medida que se descienden por la rama izquierda, y se imprimen los nodos al regresar de la rama derecha.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Árbol Binario – recorrido InOrden

/*
Cargar un Nodo con tipo de dato genérico en el campo información
de forma iterativa.
Luego, mostrar el recorrido por el árbol y hacer uno de los recorridos
Naturales o Inversos.
*/

#include <iostream>
#include <string.h>
using namespace std;

// PILAs
template <typename T>
struct NodoPila
{
T info;
NodoPila<T> *sgte;
};
template <typename T>
void push(NodoPila<T> *&pila, T x)
{
NodoPila<T> *p = new NodoPila<T>();
p->info = x;
p->sgte = pila;
pila = p;
}
template <typename T>
T pop(NodoPila<T> *&pila)
{
NodoPila<T> *p = pila;
T x = p->info;
pila = p->sgte;
delete (p);
return x;
}

// ARBOL
template <typename T>
struct Nodo
{
T info;
Nodo<T> *izq;
Nodo<T> *der;
};

AyED – K1026
template <typename T> Nodo<T> *insertar(Nodo<T> *&raiz, T x)
{
Nodo<T> *p = raiz;
Nodo<T> *nuevo = new Nodo<T>();
nuevo->info = x;
nuevo->izq = NULL;
nuevo->der = NULL;

if (raiz == NULL)
{
raiz = nuevo;
return nuevo;
}

while (1)
{
if (x == p->info)
{
delete(nuevo);
return p;
}

if (x < p->info)
{
if (p->izq == NULL)
{
p->izq = nuevo;
break;
}
else
p = p->izq;
}

if (x > p->info)
{
if (p->der == NULL)
{
p->der = nuevo;
break;
}
else
p = p->der;
}
}
return nuevo;
}

AyED – K1026
template <typename T> void recorrerInOrden(Nodo<T> *raiz)
{

NodoPila<Nodo<T> *> *pila = NULL;


Nodo<T> *p = raiz;

while (p || pila)
{
while (p)
{
push(pila, p);
p = p->izq;
}
p = pop(pila);
cout << p->info << " ";
p = p->der;
}
}

#define TIPODATO int


int main()
{
Nodo<TIPODATO> *raiz = NULL; // inicializamos el árbol.

TIPODATO v[10] = {5,7,8,4,1,2,3,6,9,9};


for (int i=0; i<10; i++) {
insertar(raiz, v[i]);
}
cout << "InOrden: ";
recorrerInOrden(raiz);

return 0;
}

AyED – K1026

También podría gustarte