package practicoppr; /* * Clase arbol */ public class Arbol { private Nodo raiz; private boolean insert(Nodo p, Nodo n) { Nodo aux; if(n.getInfo() > p.getInfo()) { if(p.getDerecha() == null) { aux = new Nodo(n); p.setDerecha(aux); return true; } else return insert(p.getDerecha(),n); } else if(n.getInfo() < p.getInfo()) { if(p.getIzquierda() == null) { aux = new Nodo(n); p.setIzquierda(aux); return true; } else return insert(p.getIzquierda(),n); } else return false; } private String preOrden(Nodo p) { String aux = new String(); if(p != null) { aux = p.toString(); aux = aux + preOrden(p.getIzquierda()); aux = aux + preOrden(p.getDerecha()); } return aux; } private String postOrden(Nodo p) { String aux = new String(); if(p != null) { aux = postOrden(p.getIzquierda()); aux = aux + postOrden(p.getDerecha()); aux = aux + p.toString(); } return aux; } private String cenOrden(Nodo p) { String aux = new String(); if(p != null) { aux = cenOrden(p.getIzquierda()); aux = aux + p.toString(); aux = aux + cenOrden(p.getDerecha()); } return aux; } /* private String preOrdenVisita(Nodo p) { String aux = new String(); if(p != null) { aux = p.mostrarInformacion(); aux = aux + preOrdenVisita(p.getIzquierda()); aux = aux + preOrdenVisita(p.getDerecha()); } return aux; } private String postOrdenVisita(Nodo p) { String aux = new String(); if(p != null) { aux = postOrdenVisita(p.getIzquierda()); aux = aux + postOrdenVisita(p.getDerecha()); aux = aux + p.mostrarInformacion(); } return aux; } private String cenOrdenVisita(Nodo p) { String aux = new String(); if(p != null) { aux = cenOrdenVisita(p.getIzquierda()); aux = aux + p.mostrarInformacion(); aux = aux + cenOrdenVisita(p.getDerecha()); } return aux; } */ private boolean busc(Nodo p, Correspondencia c) { boolean aux = false; if(p != null) { if(p.getInfo() == c.getNroDeCasa()) aux = true; else { aux = busc(p.getIzquierda(),c); if(aux == false) aux = busc(p.getDerecha(),c); } } return aux; } private int alt(Nodo p) { int altura = 0; if(p != null) { int a1, a2; a1 = 1 + alt(p.getIzquierda()); a2 = 1 + alt(p.getDerecha()); //retornar de las dos, la mayor if(a1>a2) altura = a1; else altura = a2; } return altura; } public Arbol(Nodo r) { raiz = r; } public void setRaiz(Nodo r) { raiz = r; } public Nodo getRaiz() { return raiz; } public boolean insertar(Nodo n) { if(raiz == null) { raiz = new Nodo(n); return true; } else return insert(raiz,n); } public boolean insertar(Correspondencia c) { Nodo n = new Nodo(c); if(raiz == null) { raiz = new Nodo(n); return true; } else return insert(raiz,n); } public String toString(int tipo) // 1 preorden, 2 postorden, 3 ordencentral { String aux = new String(); if(raiz != null) { switch(tipo) { case 1: aux = preOrden(raiz); break; case 2: aux = postOrden(raiz); break; case 3: aux = cenOrden(raiz); break; default: aux = ""; } } else aux = ""; return aux; } /* public String mostrarVisita(int tipo) // 1 preorden, 2 postorden, 3 ordencentral { String aux = new String(); if(raiz != null) { switch(tipo) { case 1: aux = preOrdenVisita(raiz); break; case 2: aux = postOrdenVisita(raiz); break; case 3: aux = cenOrdenVisita(raiz); break; default: aux = ""; } } else aux = "-- No hay Correspondencias ingresados --"; return(aux); } */ public String mostrarVisita(int tipo){ String aux = new String(); aux = "---"; return(aux); } public boolean buscar(Correspondencia c) { if(raiz.getInfo() == c.getNroDeCasa()) // el valor buscado está en la raíz return true; else // no esta en la raiz, hay que seguir buscando return busc(raiz,c); } public int altura() { return alt(raiz); } public float sumarPeso() { return(0); } }