Está en la página 1de 10

Universidad Central del Ecuador

Estructura de Datos

Título:
Árboles en Java
Integrantes: Julián Rosero,
Cristian Pujota, Jose Pillajo
Algoritmos
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:

Capítulo 1 Sección 1.1

Sección 1.2

UniversidadCálculo
Central del Ecuador
Capítulo 2 Sección 2
Vectorial (Jorge
Lara)

Sección 3.1

Capítulo 3

Seccion 3.2

Capítulo 4 Seccion 4

2
Algoritmos
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.
Universidad Central del Ecuador
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.

(Terminologia tomada de https://www.fceia.unr.edu.ar)

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

2
Algoritmos
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.

(Imagen
tomada de:

Universidad Central del Ecuador


https://es.slideshare.net)

2
Algoritmos

Á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

Universidad Central del Ecuador

(Imagen tomada de :
https://es.slideshare.net)

RECORRIDOS DE ÁRBOLES
Preorden:

1. Visitar la Raíz

2. Recorrer el subarbol izquierdo

3. Recorrer el subarbol derecho

2
Algoritmos

Inorden:

1. Recorrer el subarbol izquierdo

2. Visitar la raíz

3. Recorrer el subarbol derecho

Universidad Central del Ecuador

Postorden:

1. Recorrer el subarbol izquierdo

2. Recorrer el subarbol derecho

3. Visitar la raíz

2
Algoritmos

( 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;

Universidad Central del Ecuador


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) {

2
Algoritmos
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);

Universidad Central del Ecuador


} 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) {

2
Algoritmos
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;

Universidad Central del Ecuador


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)

2
Algoritmos
RESULTADOS DEL PROGRAMA

Universidad Central del Ecuador

También podría gustarte