Búsqueda por palabras claves

No se olviden de consultar por palabras claves! Ejemplo de Estructura de datos en java, tutorial de estructura de datos
Búsqueda personalizada

jueves, 20 de junio de 2019

Determinar el altitud del arbol java con recursividad, niveles del arbol con recursividad.

/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */
 
package pryarboles;

/**
 *
 * @author cisco
 */
public class Arbol {

    private Nodo raiz;

    public Arbol() {
        raiz = null;
    }

    public void insertar(int dato, Nodo actual) {
        if (actual == null) {
            raiz = new Nodo(dato);
        } else {
            if (dato < actual.getDato()) {
                if (actual.getIzquieda() == null) {
                    Nodo nuevo = new Nodo(dato);
                    actual.setIzquieda(nuevo);
                } else {
                    actual = actual.getIzquieda();
                    insertar(dato, actual);
                }

            } else {
                if (actual.getDerecha() == null) {
                    Nodo nuevo = new Nodo(dato);
                    actual.setDerecha(nuevo);
                } else {
                    insertar(dato, actual.getDerecha());
                }
            }
        }
    }

    public void insertar(int dato) {
        insertar(dato, raiz);
    }

    public int imprimirPreOrden(Nodo actual, int n, int mayor) {
        if (actual != null) {
           // System.out.println(actual.getDato() + " " + n);
           if(n>mayor)
               mayor=n;
           int a=imprimirPreOrden(actual.getIzquieda(), n + 1, mayor);
           int b=imprimirPreOrden(actual.getDerecha(), n + 1, mayor);
            if (a > b ) {
               return a;
            }
            return b;
            
           
        }
        return mayor;
    }

    public void imprimirPreOrden() {
        System.out.println(imprimirPreOrden(raiz, 1, 0));
    }

}

jueves, 23 de mayo de 2019

hilos en java, ejercicio listas circulares, insetar nodos en listas doblemente enlazadas

Se desea crear una lista circular con números perfectos utilizando hilos


package prylistascircular;

/**
 *
 * @author laboratorio
 */
public class Nodo {
    private int dato;
    private Nodo anterior;
    private Nodo siguiente;

    public Nodo(int dato, Nodo anterior, Nodo siguiente) {
        this.dato = dato;
        this.anterior = anterior;
        this.siguiente = siguiente;
    }

    public int getDato() {
        return dato;
    }

    public void setDato(int dato) {
        this.dato = dato;
    }

    public Nodo getAnterior() {
        return anterior;
    }

    public void setAnterior(Nodo anterior) {
        this.anterior = anterior;
    }

    public Nodo getSiguiente() {
        return siguiente;
    }

    public void setSiguiente(Nodo siguiente) {
        this.siguiente = siguiente;
    }
    
    
}


package prylistascircular;

/**
 *
 * @author laboratorio
 */
public class Circular {

    private Nodo inicio;
    private Nodo fin;

    public Circular() {
        inicio = fin = null;
    }

    public boolean esVacia() {
        return inicio == null && fin == null;
    }

    public void insertarInicio(int dato) {
        Nodo nuevo = new Nodo(dato, fin, inicio);
        if (esVacia()) {
            inicio = fin = nuevo;
        } else {
            inicio.setAnterior(nuevo);
            fin.setSiguiente(nuevo);
            inicio = nuevo;
        }
    }

    public void insertarFin(int dato) {
        Nodo nuevo = new Nodo(dato, fin, inicio);
        if (esVacia()) {
            inicio = fin = nuevo;
        } else {
            inicio.setAnterior(nuevo);
            fin.setSiguiente(nuevo);
            fin = nuevo;
        }
    }

    public void imprimir() {
        Nodo aux = inicio;
        do {
            System.out.println(aux.getDato());
            aux = aux.getSiguiente();
        } while (aux != inicio);

    }

}



package prylistascircular;


/**
 *
 * @author laboratorio
 */
public class Hilo implements Runnable {

    private Circular lista;
    private int min;
    private int max;

    public Hilo(Circular lista, int min, int max) {
        this.lista = lista;
        this.min = min;
        this.max = max;
    }

    @Override
    public void run() {

        for (int i = min; i < max; i++) {
            int acum = 0;
            for (int j = 1; j <= i / 2; j++) {
                if (i % j == 0) {
                    acum += j;
                }

            }
            if (acum == i) {
                lista.insertarFin(i);
                System.out.println("Inserto; " + i);
            }
        }

    }

}



package prylistascircular;

/**
 *
 * @author laboratorio
 */
public class PryListasCircular {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws InterruptedException {
        // TODO code application logic here

        Circular lista = new Circular();

        Hilo h1 = new Hilo(lista, 1, 1000);
        h1.run();
        Hilo h2 = new Hilo(lista, 8000, 9000);
        h2.run();
        Hilo h3 = new Hilo(lista, 33550030, 33551000);
        h3.run();
        h1.join();
        h2.join();
        h3.join();

        lista.imprimir();

    }

}