1R P2 Actividad 2 Su4

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 15

INSTITUTO TECNOLÓGICO SUPERIOR DE

CALKINI EN EL ESTADO DE CAMPECHE

CARRERA: INGENIERÍA EN INFORMÁTICA

TERCER SEMESTRE

MATERIA: ESTRUCTURA DE DATOS 3A 2021

P2 ACTIVIDAD 2 SU4

DOCENTE: JOSE ALFONSO CUEVAS BACAB

INTEGRANTES:

CLARITZA MARGARITA COHUO CHUC

DANIEL ISAIAS POOL PECH


Arbol menu

package arbol;

import javax.swing.JOptionPane;

/**

* @author 7249

*/

public class Arbol {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

int opcion = 0, elemento;

String nombre;

Arbolbinario arbolito = new Arbolbinario();

do {
try {

opcion = Integer.parseInt(JOptionPane.showInputDialog(null,

"1. Agregar un Nodo\n"

+ "2.Recorrido en Modo InOrden\n"

+ "3. Recorrido en Modo PreOrden\n"

+ "4. Recorrido en Modo PostOrden\n"

+ "5. Buscar Nodo\n"

+ "6. Eliminar Nodo\n"

+ "7.Salir\n"

+ "Elige una Opción.....", "Árboles binarios",

JOptionPane.QUESTION_MESSAGE));

switch (opcion) {

case 1:

elemento = Integer.parseInt(JOptionPane.showInputDialog(null,

"Ingresa el Nodo...", "Agregando Nodo...",

JOptionPane.QUESTION_MESSAGE));

nombre = JOptionPane.showInputDialog(null, "Ingresa el nombre


del Nodo....", "Agregando Nodo", JOptionPane.QUESTION_MESSAGE);

arbolito.agregarNodo(elemento, nombre);

break;

case 2:
if (!arbolito.estaVacío()) {

System.out.println();

arbolito.inOrden(arbolito.raíz);

} else {

JOptionPane.showMessageDialog(null, "El Arbol esta vacío", "¡!",


JOptionPane.QUESTION_MESSAGE);

break;

case 3:

if (!arbolito.estaVacío()) {

System.out.println();

arbolito.preOrden(arbolito.raíz);

} else {

JOptionPane.showMessageDialog(null, "El Arbol esta vacío", "¡!",


JOptionPane.QUESTION_MESSAGE);

break;
case 4:

if (!arbolito.estaVacío()) {

System.out.println();

arbolito.postOrden(arbolito.raíz);

} else {

JOptionPane.showMessageDialog(null, "El Arbol esta vacío", "¡!",


JOptionPane.QUESTION_MESSAGE);

break;

case 5:

if (!arbolito.estaVacío()) {

elemento = Integer.parseInt(JOptionPane.showInputDialog(null,

"Ingresa el Nodo a buscar...", "Buscando Nodo...",

JOptionPane.QUESTION_MESSAGE));

if (arbolito.buscarNodo(elemento) == null) {

JOptionPane.showMessageDialog(null, "El Nodo mencionado,


no se encuentra", "¡!", JOptionPane.QUESTION_MESSAGE);

} else {
System.out.println("Nodo Encontrado, su nombre del dato es: "
+ arbolito.buscarNodo(elemento));

} else {

JOptionPane.showMessageDialog(null, "El Arbol esta vacío", "¡!",


JOptionPane.QUESTION_MESSAGE);

break;

case 6:

if (!arbolito.estaVacío()) {

elemento = Integer.parseInt(JOptionPane.showInputDialog(null,

"Ingresa el Nodo a Eliminar...", "Eliminando Nodo...",

JOptionPane.QUESTION_MESSAGE));

if (arbolito.eliminar(elemento) == false) {

JOptionPane.showMessageDialog(null, "El Nodo mencionado,


no se encuentra", "¡!", JOptionPane.QUESTION_MESSAGE);
} else {

JOptionPane.showMessageDialog(null, "El Nodo ha sido


Eliminadodel arbol ", "¡Nodo Eliminado!", JOptionPane.QUESTION_MESSAGE);

} else {

JOptionPane.showMessageDialog(null, "El Arbol esta vacío", "¡!",


JOptionPane.QUESTION_MESSAGE);

break;

case 7:

JOptionPane.showMessageDialog(null, "Aplicación finalizada", "fin",


JOptionPane.QUESTION_MESSAGE);

break;

default:

JOptionPane.showMessageDialog(null, "Opción incorrecta", "¡!",


JOptionPane.QUESTION_MESSAGE);

} catch (NumberFormatException n) {
JOptionPane.showInternalMessageDialog(null, "Error" +
n.getMessage());

} while (opcion != 7);

// BUSCAR NODO

public NodoArbol buscarNodo(int d){

NodoArbol aux= raíz;

while(aux.dato!=d){

if (d< aux.dato){

aux=aux.hijoIzquierdo;

}else {

aux=aux.hijoDerecho;

}
if(aux==null){

return null;

return aux;

//METODO DE ELIMINAR UN NODO

public boolean eliminar (int d){

NodoArbol auxiliar=raíz;

NodoArbol padre= raíz;

boolean esHijoIzq=true;

while(auxiliar.dato!=d){

padre=auxiliar;

if(d<auxiliar.dato){

esHijoIzq=true;

auxiliar=auxiliar.hijoIzquierdo;

}else {
esHijoIzq= false;

auxiliar=auxiliar.hijoDerecho;

if(auxiliar==null){

return false;

}//fin del while

if(auxiliar.hijoIzquierdo== null && auxiliar.hijoDerecho==null){

if (auxiliar== raíz){

raíz = null;

}else if(esHijoIzq) {

padre.hijoIzquierdo=null;

}else{

padre.hijoDerecho=null;

}else if (auxiliar.hijoDerecho==null){

if (auxiliar== raíz){

raíz = auxiliar.hijoIzquierdo;

}else if(esHijoIzq) {

padre.hijoIzquierdo=auxiliar.hijoIzquierdo;
}else{

padre.hijoDerecho=auxiliar.hijoIzquierdo;

}else if (auxiliar.hijoIzquierdo== null){

if (auxiliar== raíz){

raíz = auxiliar.hijoDerecho;

}else if(esHijoIzq) {

padre.hijoIzquierdo=auxiliar.hijoDerecho;

}else{

padre.hijoDerecho=auxiliar.hijoIzquierdo;

}else {

NodoArbol reemplazo =obtenerNodoReemplazo (auxiliar);

if (auxiliar == raíz ){

raíz = reemplazo;

} else if (esHijoIzq){

padre.hijoIzquierdo=reemplazo;

}else {
padre.hijoDerecho= reemplazo;

reemplazo.hijoIzquierdo= auxiliar.hijoIzquierdo;

return true;

//Método de devolver Nodo Reemplazo

public NodoArbol obtenerNodoReemplazo (NodoArbol nodoReemp){

NodoArbol reemplazarPadre= nodoReemp;

NodoArbol reemplazo=nodoReemp;

NodoArbol auxiliar= nodoReemp.hijoDerecho;

while(auxiliar != null){

reemplazarPadre=reemplazo;

reemplazo=auxiliar;

auxiliar=auxiliar.hijoIzquierdo;

if (reemplazo!=nodoReemp.hijoDerecho){

reemplazarPadre.hijoIzquierdo= reemplazo.hijoDerecho;
reemplazo.hijoDerecho=nodoReemp.hijoDerecho;

System.out.println("El NodoReemplazo es:"+ reemplazo);

return reemplazo;

Nodo árbol

package arbol;

/**

* @author 7249

*/

public class NodoArbol {

int dato;
String nombre;

NodoArbol hijoIzquierdo, hijoDerecho;

public NodoArbol (int d, String nom){

this.dato =d;

this.nombre=nom;

this.hijoIzquierdo= null;

this.hijoDerecho=null;

public String toString (){

return nombre + " Y el Nodo es:" + dato;

}
Este programa llamado árbol es conformado por sus dos clases que es el
árbolbinario y el nodoárbol los cuales se mostraron en las paginas anteriores.

También podría gustarte