class Arbol { private Nodo raiz; public Arbol() { } public boolean existe(int busqueda) { return existe(this.raiz, busqueda); } private boolean existe(Nodo n, int busqueda) { if (n == null) { return false; } if (n.getDato() == busqueda) { return true; } else if (busqueda < n.getDato()) { return existe(n.getIzquierda(), busqueda); } else { return existe(n.getDerecha(), busqueda); } } public void insertar(int dato) { if (this.raiz == null) { this.raiz = new Nodo(dato); } else { this.insertar(this.raiz, dato); } } private void insertar(Nodo padre, int dato) { if (dato > padre.getDato()) { if (padre.getDerecha() == null) { padre.setDerecha(new Nodo(dato)); } else { this.insertar(padre.getDerecha(), dato); } } else { if (padre.getIzquierda() == null) { padre.setIzquierda(new Nodo(dato)); } else { this.insertar(padre.getIzquierda(), dato); } } } private void preorden(Nodo n) { if (n != null) { n.imprimirDato(); preorden(n.getIzquierda()); preorden(n.getDerecha()); } } private void inorden(Nodo n) { if (n != null) { inorden(n.getIzquierda()); n.imprimirDato(); inorden(n.getDerecha()); } } private void postorden(Nodo n) { if (n != null) { postorden(n.getIzquierda()); postorden(n.getDerecha()); n.imprimirDato(); } } public void preorden() { this.preorden(this.raiz); } public void inorden() { this.inorden(this.raiz); } public void postorden() { this.postorden(this.raiz); } public static void main(String[] argumentos) { Arbol arbol = new Arbol(); arbol.insertar(1); arbol.insertar(2); arbol.insertar(3); arbol.insertar(4); arbol.insertar(0); System.out.println("Recorriendo inorden:"); arbol.inorden(); System.out.println("Recorriendo postorden:"); arbol.postorden(); System.out.println("Recorriendo preorden:"); arbol.preorden(); System.out.println(arbol.existe(1)); // true System.out.println(arbol.existe(7)); // false System.out.println(arbol.existe(0)); // true } }