Sie sind auf Seite 1von 4

Árboles en Java

DEFINICIÓN
Los árboles en Java son conocidos también como arboles binarios. Un árbol binario
es una estructura de datos recursiva, cada elemento de datos se almacena en una
estructura llamada nodo. El nodo superior o de inicio del árbol (invertido) se
denomina nodo raíz. Todos los nodos están vinculados con un borde y forman
subárboles jerárquicos que comienzan con el nodo raíz.
Un ejemplo práctico de árbol en el cual podremos entender lo que son nodos y raíces
es en la de un libro y sus capítulos que a su vez contienen secciones:

TERMINOLOGIA
1. Nodo ( Node ) También llamado vértice o elemento del árbol. Es el contenedor
de los datos y los enlaces a sus hijos y a su padre.
2. Nodo Raiz ( Root Node ) Es el nodo donde comienza el árbol. Cada árbol tiene
solamente un nodo raíz, desde el cual cuelgan todos sus descendientes.
3. Nodo Rama ( Branch Node ) También llamado nodo interior o interno. Es un nodo
cualquiera que puede tener hijos, aunque en este preciso momento no los tenga. Es
todo nodo que no es raíz o hoja.
4. Nodo Hoja ( Leaf Node ) También llamado nodo terminal. Es un nodo cualquiera
que no puede tener hijos y nunca los podrá tener. Es un nodo que no tiene ningún
subárbol.
5. Nodo Hermano ( Sibling Node ) Es un nodo que es hijo del mismo padre.
6. Camino ( Path ) Son los enlaces que van desde un nodo hasta otro nodo.
7. Rama ( Branch ) Es un camino que termina en una hoja.
8. Nivel del Nodo ( Node Level ) Es la longitud del camino desde el nodo raíz al
nodo específico mas uno.
9. Altura del Arbol ( Tree Height ) También llamado profundidad. Es el número
máximo de nodos de una rama del árbol. Es igual al nivel más alto de los nodos del
árbol.
10. Peso del Arbol ( Tree Wheight ) Es el número de nodos terminales
11. Arbol Vacio ( Empty Tree ) Es un árbol que en este momento no tiene ningún
nodo. De existir solo un nodo, ese nodo es el nodo raíz.
12. Grado de un Nodo ( Node Degree ) Es el número de subárboles que tiene un
nodo. Los nodos hoja tienen grado cero.
13. Grado de un Arbol ( Tree Degree ) El grado máximo de todos los nodos del
árbol.
14. Ancestros del Nodo ( Ancestors ) Son todos los nodos del árbol en el camino
que va desde el raíz hasta el nodo específico.

TIPOS DE ÁRBOLES

Árbol General
El árbol general almacena los elementos en un orden jerárquico en el que el
elemento de nivel superior siempre está presente en el nivel 0 como elemento raíz.
Todos los nodos, excepto el nodo raíz, están presentes en varios niveles. Los nodos
que están presentes en el mismo nivel se denominan hermanos, mientras que los nodos
que están presentes en los diferentes niveles exhiben la relación padre-hijo entre
ellos. Un nodo puede contener cualquier número de subárboles. El árbol en el que
cada nodo contiene 3 subárbol, se llama árbol ternario.
Bosques
El bosque se puede definir como el conjunto de árboles disjuntos que se pueden
obtener al eliminar el nodo raíz y los bordes que conectan el nodo raíz al nodo de
primer nivel.

Árbol binario
El árbol binario es una estructura de datos en la que cada nodo puede tener como
máximo 2 hijos. El nodo presente en el nivel más alto se llama el nodo raíz. Un
nodo con 0 hijos se llama nodo hoja. Los árboles binarios se utilizan en las
aplicaciones como la evaluación de expresiones y muchos más.
Árbol de búsqueda binaria
El árbol binario de búsqueda es un árbol binario ordenado. Todos los elementos en
el subárbol izquierdo son menores que la raíz, mientras que los elementos presentes
en el subárbol derecho son mayores o iguales que el elemento del nodo raíz. Los
árboles de búsqueda binarios se utilizan en la mayoría de las aplicaciones del
dominio de la informática, como la búsqueda, la clasificación, etc.
Árbol de expresión
Los árboles de expresión se utilizan para evaluar las expresiones aritméticas
simples. El árbol de expresiones es básicamente un árbol binario donde los nodos
internos están representados por operadores, mientras que los nodos de hoja están
representados por operandos

RECORRIDOS DE ÁRBOLES
Preorden:
1. Visitar la Raíz
2. Recorrer el subarbol izquierdo
3. Recorrer el subarbol derecho

Inorden:
1. Recorrer el subarbol izquierdo
2. Visitar la raíz
3. Recorrer el subarbol derecho

Postorden:
1. Recorrer el subarbol izquierdo
2. Recorrer el subarbol derecho
3. Visitar la raíz

( Recorridos tomado de : http://cyberaula.com)


IMPLEMENTACION DE ÁRBOLES EN JAVA EJEMPLO
package javaapplication26;
import java.util.Random;
import java.util.concurrent.atomic.AtomicBoolean;

public class IntBinaryTree {


// Node class for creating each node in the tree
class Node {
public Node left;
public Node right;
int value;
public Node(int value) {
this.value = value;
}
}
private Node rootNode;
private int size = 0; // tree size, the number of nodes in the tree
private void insertNode(Node node, int value) {
if (value < node.value) {
if (node.left != null) {
insertNode(node.left, value);
} else {
node.left = new Node(value);
this.size++;
}
} else if (value > node.value) {
if (node.right != null) {
insertNode(node.right, value);
} else {
node.right = new Node(value);
this.size++;
}
}
private void findNode(Node node, int n, AtomicBoolean found) {
if (node != null) {
findNode(node.left, n, found);
if (node.value == n) {
found.set(true);
}
findNode(node.right, n, found);
}
} private void printBT(Node node) {
if (node != null) {
printBT(node.left);
System.out.println(node.value);
printBT(node.right);
}
}
public void insert(int value) {
if (this.rootNode == null) {
this.rootNode = new Node(value);
this.size++;
} else {
insertNode(this.rootNode, value);
}
}
public boolean find(int n) {
AtomicBoolean found = new AtomicBoolean();
findNode(this.rootNode, n, found);
return found.get();
}
public int getSize() {
return this.size;
}
public void print() {
printBT(this.rootNode);
}
public static void main(String[] args) {
IntBinaryTree bt = new IntBinaryTree();
Random rand = new Random();
int testSize = 100, maxNum = 10;
for(int i=0; i<testSize; i++) {
bt.insert(rand.nextInt(maxNum)+1);
}
bt.print();
System.out.println("Tree size: " + bt.getSize());
System.out.println("Found 2: " + bt.find(2));
System.out.println("Found 22: " + bt.find(22));
}
}
(ejemplo tomado de :
https://www.codexpedia.com)
RESULTADOS DEL PROGRAMA

Das könnte Ihnen auch gefallen