Advertisement
LDGR007

Untitled

Dec 10th, 2024
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.53 KB | Software | 0 0
  1. /*
  2.  * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
  3.  */
  4. package com.mycompany.abb;
  5.  
  6. import java.util.ArrayList;
  7.  
  8. public class ABB {
  9.  
  10.     public static void main(String[] args) {
  11.         System.out.println("Hello World!");
  12.         Arbol a1 = new Arbol();
  13.         a1.insertar(4);
  14.         a1.insertar(4);
  15.         a1.insertar(4);
  16.         a1.insertar(4);
  17.         a1.insertar(4);
  18.         a1.insertar(4);
  19.         a1.insertar(4);
  20.         a1.insertar(6);
  21.         a1.insertar(6);
  22.         a1.insertar(6);
  23.         a1.insertar(6);
  24.         a1.insertar(8);
  25.         a1.insertar(8);
  26.         a1.insertar(8);
  27.         a1.insertar(8);
  28.         a1.inOrden();
  29.         System.out.println("FRECUENCIA DESCENDENTE");
  30.         a1.frecDesc();
  31.         System.out.println("suma la frecuencias " + a1.sumaFrec());
  32.         System.out.println("contarUnicos " + a1.contarUnico());
  33.         System.out.println("contar frecuencia mayor a 1 = " + a1.frecMayorA(1));
  34.         System.out.println("contar frecuencia " + a1.cantFrec());
  35.         System.out.println("Frecuencia maxima " + a1.frecMax());
  36.  
  37.         ListaA Ar = new ListaA();
  38.  
  39.         Ar.insertarEnArbol(0, 20);
  40.         Ar.insertarEnArbol(0, 30);
  41.         Ar.insertarEnArbol(1, 40);
  42.         Ar.insertarEnArbol(1, 60);
  43.         Ar.insertarEnArbol(1, 70);
  44.         Ar.insertarEnArbol(2, 80);
  45.         Ar.insertarEnArbol(2, 90);
  46.         Ar.insertarEnArbol(2, 100);
  47.         Ar.insertarEnArbol(2, 110);
  48.  
  49.         System.out.println("Mostrar todos los arboles array :");
  50.         Ar.mostrar();
  51.  
  52.         // Mostrar el árbol con mayor cantidad de elementos
  53.         System.out.println("\narbol con mayor cantidad de elementos:");
  54.         Ar.mayorCxA();
  55.  
  56.         // Mostrar el mayor elemento de cada árbol
  57.         System.out.println("\nMayor elemento de cada arbol:");
  58.         Ar.mayorxA();
  59.  
  60.         // Mostrar la suma de los elementos de cada árbol
  61.         System.out.println("\nSuma de los elementos de cada arbol:");
  62.         Ar.sumaxA();
  63.  
  64.         System.out.println("\nvaciarTodosLosArboles:");
  65.         Ar.vaciarTodo();
  66.  
  67.         System.out.println("Mostrar todos los arboles array :");
  68.         Ar.mostrar();
  69.     }
  70.  
  71.     public static class Nodo {
  72.  
  73.         public Nodo izq;
  74.         public Nodo der;
  75.         public int elem;
  76.         public int frec;
  77.  
  78.         public Nodo(int elem) {
  79.             this.elem = elem;
  80.             frec = 1;
  81.             this.izq = this.der = null;
  82.         }
  83.     }
  84.  
  85.     public static class Arbol {
  86.  
  87.         public Nodo raiz;
  88.  
  89.         public Arbol() {
  90.             raiz = null;
  91.         }
  92.  
  93.         public boolean esVacio() {
  94.             return raiz == null;
  95.         }
  96.  
  97.         public void inOrden() {
  98.             inOrden(raiz);
  99.         }
  100.  
  101.         private void inOrden(Nodo p) {
  102.             if (p != null) {
  103.                 inOrden(p.izq);
  104.                 //System.out.println(p.elem + "FRECUENCIA ---> " + p.frec);
  105.                 System.out.println(p.elem);
  106.                 inOrden(p.der);
  107.             }
  108.         }
  109.  
  110.         public int suma() {
  111.             return suma(raiz);
  112.         }
  113.  
  114.         private int suma(Nodo p) {
  115.             if (p == null) {
  116.                 return 0;
  117.             }
  118.             return suma(p.izq) + suma(p.der) + p.elem;
  119.         }
  120.  
  121.         public int mayor() {
  122.             return mayor(raiz);
  123.         }
  124.  
  125.         private int mayor(Nodo p) {
  126.             if (p.der == null) {
  127.                 return p.elem;
  128.             }
  129.             return mayor(p.der);
  130.         }
  131.  
  132.         public void insertar(int x) {
  133.             raiz = insertar(raiz, x);
  134.         }
  135.  
  136.         private Nodo insertar(Nodo p, int x) {
  137.             if (p == null) {
  138.                 return new Nodo(x);
  139.             }
  140.             if (p.elem == x) {
  141.                 p.frec++;
  142.                 return p;
  143.             }
  144.             if (x < p.elem) {
  145.                 p.izq = insertar(p.izq, x);
  146.             } else {
  147.                 p.der = insertar(p.der, x);
  148.             }
  149.             return p;
  150.         }
  151.  
  152.         //1.- FRECUENCIA DESCENDENTE
  153.         public void frecDesc() {
  154.             frecDesc(raiz);
  155.         }
  156.  
  157.         private void frecDesc(Nodo p) {
  158.             if (p != null) {
  159.                 frecDesc(p.der);
  160.                 System.out.println(p.elem + "FRECUENCIA ---> " + p.frec);
  161.                 frecDesc(p.izq);
  162.             }
  163.         }
  164.  
  165.         //2.- SUMA DE FRECUENCIAS
  166.         public int sumaFrec() {
  167.             return sumaFrec(raiz);
  168.         }
  169.  
  170.         private int sumaFrec(Nodo p) {
  171.             if (p == null) {
  172.                 return 0;
  173.             }
  174.             return sumaFrec(p.izq) + sumaFrec(p.der) + p.frec;
  175.         }
  176.  
  177.         //3 CONTAR ELEMENTOS DE UNA SOLA FRECUENCIA
  178.         public int contarUnico() {
  179.             return contarUnico(raiz);
  180.         }
  181.  
  182.         private int contarUnico(Nodo p) {
  183.             if (p == null) {
  184.                 return 0;
  185.             }
  186.             if (p.frec == 1) {
  187.                 return contarUnico(p.izq) + contarUnico(p.der) + 1;
  188.             } else {
  189.                 return contarUnico(p.izq) + contarUnico(p.der);
  190.             }
  191.         }
  192.  
  193.         //4.-   CONTAR ELEMENTOS CON FRECUENCIAS MASYORES A:
  194.         public int frecMayorA(int x) {
  195.             return frecMayorA(x, raiz);
  196.         }
  197.  
  198.         private int frecMayorA(int x, Nodo p) {
  199.             if (p == null) {
  200.                 return 0;
  201.             }
  202.             int cont = 0;
  203.             if (p.frec > x) {
  204.                 cont = 1;
  205.             }
  206.             cont += frecMayorA(x, p.izq);
  207.             cont += frecMayorA(x, p.der);
  208.             return cont;
  209.         }
  210.  
  211.         //5.-   CANTIDAD DE FRECUENCIAS
  212.         public int cantFrec() {
  213.             return cantFrec(raiz);
  214.         }
  215.  
  216.         private int cantFrec(Nodo p) {
  217.             if (p == null) {
  218.                 return 0;
  219.             }
  220.             return cantFrec(p.izq) + cantFrec(p.der) + 1;
  221.         }
  222.         //6.-   FRECUENCIA MAXIMA
  223.  
  224.         public int frecMax() {
  225.             return frecMax(raiz);
  226.         }
  227.  
  228.         private int frecMax(Nodo p) {
  229.             if (p == null) {
  230.                 return 0;
  231.             }
  232.             int maxIzq = frecMax(p.izq);
  233.             int maxDer = frecMax(p.der);
  234.             return Math.max(p.frec, Math.max(maxIzq, maxDer));
  235.         }
  236.     }
  237.  
  238.     public static class ListaA {
  239.  
  240.         private ArrayList<Arbol> elem;
  241.  
  242.         public ListaA() {
  243.             this.elem = new ArrayList<>(10);
  244.             for (int i = 0; i < 10; i++) {
  245.                 this.elem.add(new Arbol());
  246.             }
  247.         }
  248.  
  249.         public void insertarEnArbol(int indice, int valor) {
  250.             this.elem.get(indice).insertar(valor);
  251.             System.out.println(valor + " insertado en el arbol " + indice);
  252.         }
  253.  
  254.         //1. MOSTRAR
  255.         public void mostrar() {
  256.             for (int i = 0; i < 10; i++) {
  257.                 if (!this.elem.get(i).esVacio()) {
  258.                     System.out.println("Arbol " + i + ":");
  259.                     this.elem.get(i).inOrden();
  260.                 } else {
  261.                     System.out.println("Arbol " + i + " esta vacio.");
  262.                 }
  263.             }
  264.         }
  265.  
  266.         //2. ARBOL CON MAYOR CANTIDAD DE ELEMENTOS
  267.         public void mayorCxA() {
  268.             Arbol am = mayorC();
  269.             am.inOrden();
  270.         }
  271.  
  272.         private Arbol mayorC() {
  273.             Arbol am = this.elem.get(0);
  274.             for (int i = 0; i < 10; i++) {
  275.                 if (this.elem.get(i).cantFrec() > am.cantFrec()) {
  276.                     am = this.elem.get(i);
  277.                 }
  278.             }
  279.             return am;
  280.         }
  281.  
  282.         //3. Mayor Elemento de cada Arbol
  283.         public void mayorxA() {
  284.             for (int i = 0; i < 10; i++) {
  285.                 if (!this.elem.get(i).esVacio()) {
  286.                     System.out.println("Arbol " + i + ": Mayor: "
  287.                             + this.elem.get(i).mayor());
  288.                 }
  289.             }
  290.         }
  291.  
  292.         //4.  Muestra la suma de los elementos de cada ABB no vacío.
  293.         public void sumaxA() {
  294.             for (int i = 0; i < 10; i++) {
  295.                 if (!this.elem.get(i).esVacio()) {
  296.                     System.out.println(this.elem.get(i).suma());
  297.                 }
  298.             }
  299.         }
  300.  
  301.         //5 Vacía todos los ABB en la lista.
  302.         public void vaciarTodo() {
  303.             for (int i = 0; i < 10; i++) {
  304.                 this.elem.set(i, new Arbol());
  305.             }
  306.             System.out.println("Todos los arboles han sido vaciados");
  307.         }
  308.     }
  309. }
  310.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement