Arboles Java

  • Uploaded by: Laoska B.
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Arboles Java as PDF for free.

More details

  • Words: 810
  • Pages: 7
Apartado 13.3, clase ÁrbolBinario package arbolBinario; public class ArbolBinario { protected Nodo raiz; public ArbolBinario() { raiz = null; } public ArbolBinario(Nodo raiz) { this.raiz = raiz; } public Nodo raizArbol() { return raiz; } public boolean esVacio() { return raiz == null; } public static Nodo nuevoArbol( Nodo ramaIzqda, Object dato, Nodo ramaDrcha) { return new Nodo(ramaIzqda, dato, ramaDrcha); } public static void preorden(Nodo r) { if (r != null) { r.visitar(); preorden (r.subarbolIzdo()); preorden (r.subarbolDcho()); } } // Recorrido de un árbol binario en inorden public static void inorden(Nodo r) { if (r != null) { inorden (r.subarbolIzdo()); r.visitar(); inorden (r.subarbolDcho()); } } // Recorrido de un árbol binario en postorden public static void postorden(Nodo r) { if (r != null) { postorden (r.subarbolIzdo()); postorden (r.subarbolDcho()); r.visitar(); } } public static int altura(Nodo raiz) { if (raiz == null) return 0 ;

else { int alturaIz = altura (raiz.subarbolIzdo()); int alturaDr = altura (raiz.subarbolDcho()); if (alturaIz > alturaDr) return alturaIz + 1; else return alturaDr + 1; } } public static boolean arbolLleno(Nodo raiz) { if (raiz == null) return true; else if (altura(raiz.subarbolIzdo())!= altura(raiz.subarbolDcho())) return false; return arbolLleno(raiz.subarbolIzdo()) && arbolLleno(raiz.subarbolDcho()); } public static int numNodos(Nodo raiz) { if (raiz == null) return 0; else return 1 + numNodos(raiz.subarbolIzdo()) + numNodos(raiz.subarbolDcho()); } public static ArbolBinario copiaArbol(Nodo raiz) { Nodo raizCopia; if (raiz == null) raizCopia = null; else { ArbolBinario izdoCopia, dchoCopia; izdoCopia = copiaArbol(raiz.subarbolIzdo()); dchoCopia = copiaArbol(raiz.subarbolDcho()); raizCopia = new Nodo(izdoCopia.raizArbol(), raiz.valorNodo(), dchoCopia.raizArbol()); } return new ArbolBinario(raizCopia); } public static double evaluar(Nodo raiz, double[] operandos) throws Exception { double x, y, valor; char ch ; Character nr; valor = 0.0; if (raiz != null) // no está vacío { nr = (Character) raiz.valorNodo(); ch = nr.charValue(); if (ch >= 'A' && ch <= 'Z') return operandos[ch - 'A']; else { x = evaluar(raiz.subarbolIzdo(), operandos); y = evaluar(raiz.subarbolDcho(), operandos);

switch (ch) { case '+': valor = x + y; break; case '-': valor = x - y; break; case '*': valor = x * y; break; case '/': if (y != 0) valor = x/y; else throw new Exception("Error: división por 0"); break; case '^': valor = Math.pow(x, y); } }

}

return valor; } }

EJEMPLO 13.7 public static int numNodos(Nodo raiz) { if (raiz == null) return 0; else return 1 + numNodos(raiz.subarbolIzdo()) + numNodos(raiz.subarbolDcho()); }

EJEMPLO 13.11 public Nodo buscarIterativo (Object buscado) { Comparador dato; boolean encontrado = false; Nodo raizSub = raiz; dato = (Comparador) buscado; while (!encontrado && raizSub != null) { if (dato.igualQue(raizSub.valorNodo())) encontrado = true; else if (dato.menorQue(raizSub.valorNodo())) raizSub = raizSub.subarbolIzdo(); else raizSub = raizSub.subarbolDcho(); } return raizSub; }

EJERCICIO 13.2 import java.io.*; import arbolBinarioOrdenado.*; import arbolBinario.*; class Estudiante implements Comparador { int numMat; String nombre; public Estudiante(String n, int mat) { nombre = n; numMat = mat; } public Estudiante() { this(null, 0); } public String toString() { if (nombre != null) return nombre + numMat; else return "No asignado"; } public boolean menorQue(Object op2) { Estudiante p2 = (Estudiante) op2; return numMat < p2.numMat; } public boolean menorIgualQue(Object op2) { Estudiante p2 = (Estudiante) op2; return numMat <= p2.numMat; } public boolean mayorQue(Object op2) { Estudiante p2 = (Estudiante) op2; return numMat > p2.numMat; } public boolean mayorIgualQue(Object op2) { Estudiante p2 = (Estudiante) op2; return numMat >= p2.numMat; } public boolean igualQue(Object op2) { Estudiante p2 = (Estudiante) op2; return numMat == p2.numMat; } }

public class ArbolEstudiante { public static void main(String [] a) { ArbolBinarioBusqueda ab = new ArbolBinarioBusqueda(); BufferedReader entrada = new BufferedReader( new InputStreamReader(System.in)); Estudiante el; int nm; String nom; try { // Se crea el árbol de búsqueda do{ System.out.print("Numero de matricula(0 -> Fin): "); nm = Integer.parseInt(entrada.readLine()); if (nm > 0) { System.out.print("Nombre: "); nom = entrada.readLine(); el = new Estudiante(nom, nm); ab.insertar(el); } }while (nm != 0); // Operaciones con el arbol do { System.out.print(" 1. Mostrar el árbol\n"); System.out.print(" 2. Eliminar un estudiante\n"); System.out.print(" 3. Salir\n "); do nm = Integer.parseInt(entrada.readLine()); while(nm < 1 || nm > 3); if (nm == 1) { System.out.print("\n\tEstudiantes \n"); visualizar(ab.raizArbol()); } else if (nm == 2) { int nmt; System.out.print ("Matricula: "); nmt = Integer.parseInt(entrada.readLine()); try { ab.eliminar(new Estudiante(null,nmt)); } catch (Exception e) { System.out.println(e); } } }while (nm != 3); } catch (Exception er) { System.out.println("Error en el proceso del arbol: " + er); } } static void visualizar (Nodo r) { if (r != null) {

visualizar(r.subarbolIzdo()); System.out.println(r.valorNodo()); visualizar(r.subarbolDcho()); }

}

}

EJERCICIO 13.7 public static int numNodos(Nodo raiz) { if (raiz == null) return 0; else return 1 + numNodos(raiz.subarbolIzdo()) + numNodos(raiz.subarbolDcho()); }

EJERCICIO 13.11 public Nodo buscarIterativo (Object buscado) { Comparador dato; boolean encontrado = false; Nodo raizSub = raiz; dato = (Comparador) buscado; while (!encontrado && raizSub != null) { if (dato.igualQue(raizSub.valorNodo())) encontrado = true; else if (dato.menorQue(raizSub.valorNodo())) raizSub = raizSub.subarbolIzdo(); else raizSub = raizSub.subarbolDcho(); } return raizSub; }

Related Documents

Arboles Java
May 2020 3
Arboles
July 2020 15
Arboles
April 2020 18
Arboles
May 2020 15
Arboles
July 2020 16
Arboles
May 2020 12

More Documents from "renysantonio"