0% encontró este documento útil (0 votos)
212 vistas11 páginas

Deda U3 A3 Ropg

Este documento describe la implementación de un árbol binario de búsqueda, incluyendo la inserción de nodos, y los recorridos de inorden, preorden y postorden. Se proporciona el código para crear la estructura de nodos, agregar elementos, y realizar los diferentes tipos de recorrido de manera recursiva.

Cargado por

Btto Pavon
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
212 vistas11 páginas

Deda U3 A3 Ropg

Este documento describe la implementación de un árbol binario de búsqueda, incluyendo la inserción de nodos, y los recorridos de inorden, preorden y postorden. Se proporciona el código para crear la estructura de nodos, agregar elementos, y realizar los diferentes tipos de recorrido de manera recursiva.

Cargado por

Btto Pavon
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 DOCX, PDF, TXT o lee en línea desde Scribd

Estructura de datos

Unidad 3. Almacenamiento

Actividad 3: Programa las operaciones de un árbol binario, árbol


binario de búsqueda.

Docente: JAZMIN PEREZ MENDEZ

4to Semestre

Grupo: DS-DEDA-2001-B1-003

Roberto Carlos Pavón García

Matricula: ES1821012068

16/03/2020
El siguiente documento describe la implementación y funcionalidad de los recorridos que
se pueden realizar en un Árbol Binario de Búsqueda.

Datos Ingresados al árbol

(8, 3, 10, 1, 6, 14, 4, 7, 13)


Recorrido en InOrden

Recorrido en PreOrden
Recorrido en PostOrden

Código Fuente

Clase Main

package abb;

import javax.swing.JOptionPane;

/**
*
* @author Roberto
*/
public class ABB {
public static void main(String[] args) {
int opc=0,elemento;
// String nombre;
ArbolB arbol = new ArbolB();
// Se inicia el menu del programa con 5 opciones
do{
try{//bloque try catch para evitar errores al correr el programa si se ingresa un dato
incorrecto
opc=Integer.parseInt(JOptionPane.showInputDialog(null,"1.- Agregar Nodo\n"+
"2.- Recorrer Arbol en InOrden\n"+
"3.- Recorrer Arbol en PreOrden\n"+
"4.- Recorrer Arbol en PostOrden\n"+
"5.- Salir\n"
+ "Elige una Opcion"));
// Dependiendo de la opcion elegida se inician los casos:
switch(opc){
// esta opcion invoca el metodo para agregar un nuevo nodo o dato
case 1:
elemento = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa el
numero del Nodo", "Agregar Nodo",1));
// nombre = JOptionPane.showInputDialog(null, "Ingresa el nombre del
Nodo", "Agregar Nodo",1);
arbol.agregarNodo(elemento);
break;
// Este caso permite recorrer el arbol en InOrden invocando el metodo para
ello
case 2:
if(!arbol.estaVacio()){//lo primero que hace es verificar que el arbol no ete
vacio
arbol.inOrden(arbol.raiz);
}
else{
JOptionPane.showMessageDialog(null, "El Arbol esta vacio", "Vacio",1);
}
break;
// Este caso permite recorrer el arbol en PreOrden invocando el metodo
para ello
case 3:
if(!arbol.estaVacio()){
arbol.preOrden(arbol.raiz);
}
else{
JOptionPane.showMessageDialog(null, "El Arbol esta vacio", "Vacio",1);
}
break;
// Este caso permite recorrer el arbol en PostOrden invocando el metodo
para ello
case 4:
if(!arbol.estaVacio()){
arbol.postOrden(arbol.raiz);
}
else{
JOptionPane.showMessageDialog(null, "El Arbol esta vacio", "Vacio",1);
}
break;
case 5:
JOptionPane.showMessageDialog(null, "Aplicacion Finalizada", "Salir",1);
break;

default:
JOptionPane.showMessageDialog(null, "Opcion Incorrecta ", "Error",1);
}
}catch(NumberFormatException n){
JOptionPane.showConfirmDialog(null, "Error"+n.getMessage());
}
}while(opc!=5);
}
}

Clase Nodo

package abb;

/**
*
* @author Roberto
*/
public class Nodo {
// se inicializa los datos que recibira el nodo a crear y los punteros necesarios para cada
nodo
int dato;
// String nombre;
Nodo izquierdo, derecho;

//se asigna el numero inresado por el usuario al nodo y sus punteros derecho e izquierdo
public Nodo(int d){
this.dato=d;
// this.nombre=nom;
this.derecho=null;
this.izquierdo=null;
}
}
Clase ArbolB

package abb;
/**
*
* @author Roberto
*/
public class ArbolB {
Nodo raiz;

public ArbolB(){
raiz = null;
}

public void agregarNodo(int d){


Nodo nuevo = new Nodo(d);
if(raiz == null){
raiz=nuevo;
}
else{
Nodo auxiliar=raiz;
Nodo padre;
while(true){
padre=auxiliar;
if(d<auxiliar.dato){
auxiliar=auxiliar.izquierdo;
if(auxiliar==null){
padre.izquierdo=nuevo;
return;
}
}
else{
auxiliar=auxiliar.derecho;
if(auxiliar==null){
padre.derecho=nuevo;
return;
}
}
}
}
}

// metodo de tipo logico que indicara si el arbol esta vacio


public boolean estaVacio(){
return raiz==null;
}

// metodo para realizar el recorrido del arbol en inOrden


public void inOrden(Nodo r){
if(r!=null){//si la raiz del arbol no esta vacia el metodo se invoca a si mismo
// conviertiendose en una funcion recursiva donde mostrara primero los nodos
// izquierdos y despues los derechos
inOrden(r.izquierdo);
System.out.println(r.dato);
inOrden(r.derecho);
}
}

// metodo para realizar el recorrido del arbol en inOrden


public void preOrden(Nodo r){
if(r!=null){//si la raiz del arbol no esta vacia el metodo se invoca a si mismo
// conviertiendose en una funcion recursiva donde mostrara primero la raiz, despues
los nodos
// izquierdos y despues los derechos
System.out.println(r.dato);
preOrden(r.izquierdo);
preOrden(r.derecho);
}
}

// metodo para realizar el recorrido del arbol en inOrden


public void postOrden(Nodo r){
if(r!=null){//si la raiz del arbol no esta vacia el metodo se invoca a si mismo
// conviertiendose en una funcion recursiva donde mostrara primero los nodos
// izquierdos, despues los derecho y al final la raiz
postOrden(r.izquierdo);
postOrden(r.derecho);
System.out.println(r.dato);
}
}
}

Bibliografía
MasterHeHeGar. (20 de Septiembre de 2014). "09 - Métodos Recursivos (EDDJava)". Obtenido de
YouTube: https://www.youtube.com/watch?
v=aIZhN5skimY&list=PLCLpAU8VN0j4RGemFfybZrWoSX57NbEq9&index=9

MasterHeHeGar. (08 de Noviembre de 2014). "33 - Árboles Binarios (EDDJava)". Obtenido de


YouTube: https://www.youtube.com/watch?
v=JXckd1_XdAU&list=PLCLpAU8VN0j4RGemFfybZrWoSX57NbEq9&index=33
MasterHeHeGar. (08 de Noviembre de 2014). "34 - Árboles Binarios de Búsqueda, Creación e
Inserción (EDDJava)". Obtenido de YouTube: https://www.youtube.com/watch?
v=ZKnwBJ8q2TE&list=PLCLpAU8VN0j4RGemFfybZrWoSX57NbEq9&index=34

MasterHeHeGar. (08 de Noviembre de 2014). "35 - Árboles Binarios de Búsqueda, Recorrido


InOrden (EDDJava)". Obtenido de YouTube: https://www.youtube.com/watch?
v=l8XPkY_q4Qs&list=PLCLpAU8VN0j4RGemFfybZrWoSX57NbEq9&index=35

MasterHeHeGar. (28 de Noviembre de 2014). "36 - Árboles Binarios de Búsqueda, Recorrido


PreOrden (EDDJava)". Obtenido de YouTube: https://www.youtube.com/watch?v=Nz-
9ZQrhgO0&list=PLCLpAU8VN0j4RGemFfybZrWoSX57NbEq9&index=36

MasterHeHeGar. (10 de Noviembre de 2014). "37 - Árboles Binarios de Búsqueda, Recorrido


PostOrden (EDDJava)". Obtenido de YouTube: https://www.youtube.com/watch?
v=52mLzH97gYA&list=PLCLpAU8VN0j4RGemFfybZrWoSX57NbEq9&index=37

Universidad Abierta y a Distancia de México. (Marzo de 2020). "Estructura de datos. Unidad 3.


Almacenamiento". Obtenido de ceit.unadmexico.mx/contenidos:
https://ceit.unadmexico.mx/contenidos/DCEIT/BLOQUE1/DS/04/DEDA/U3/descargables/
Unidad_3_Almacenamiento_DEDA.pdf

También podría gustarte