56
Arboles Ing. Andrea Quan

Arboles en java

  • Upload
    a3ito

  • View
    34

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arboles en java

Arboles

Ing. Andrea Quan

Page 2: Arboles en java

Árboles (Trees) •  Una estructura de árbol es una estructura de

datos compuesta por vértices conectados entre si por medio de arcos

Page 3: Arboles en java

Rooted Tree •  Un rooted tree es una estructura de árbol en

donde existe un vértice principal al que se le llama raiz (root).

•  A los vértices en un rooted tree se les llaman nodos.

Page 4: Arboles en java

Rooted Tree •  Un rooted tree, al igual que cualquier estructura

de árbol, es una estructura dinámica. •  La única referencia directa que se tiene es a la

raiz.

raiz

Page 5: Arboles en java

Rooted Tree •  Un rooted tree se divide en niveles dependiendo

cuantas conecciones existen entre un nodo determinado y la raíz.

•  Su altura esta determinada por cuantos niveles tiene

raiz

Level 2

Level 3

Level 1

Height = 3

Page 6: Arboles en java

Rooted Tree padre

hijo

hermanos

Page 7: Arboles en java

Rooted Tree

x

ancestros de x

x

descendientes de x

Page 8: Arboles en java

Rooted Tree

root

Sub - arbol

Page 9: Arboles en java

Rooted Tree

HOJAS

Page 10: Arboles en java

Binary Tree •  Un binary tree es un rooted tree en donde cada

nodo solo puede tener cero, uno o dos hijos. •  Se puede definir recursivamente como:

Un árbol binario es: un rooted tree compuesto por un nodo raíz el cual tiene un subárbol binario izquierdo, y un subárbol binario derecho.

Page 11: Arboles en java

En Java…

La estructura se divide en dos tipos de objeto: •  Nodo

–  Referencia al padre (no necesariamente) –  Referencia al hijo izquierdo –  Referencia al hijo derecho –  dato

•  BinaryTree –  Referencia a raíz

Page 12: Arboles en java

Representación de un BinaryTree RAIZ

Page 13: Arboles en java

Clase BTNode

Page 14: Arboles en java

Clase BinaryTree

Page 15: Arboles en java

Formas de recorrer un Binary Tree

Page 16: Arboles en java

Formas de recorrer un Binary Tree

Existen tres formas de recorrer un Binary Tree. Cada una de ellas se aplica a un árbol binario y funcionan en forma recursiva.

•  Preorder

–  Visita el root, después aplica preorder al subárbol izquierdo y al subárbol derecho.

•  Inorder –  Aplica inorder al subarbol izquierdo, después visita al

root, y después aplica inorder al subarbol derecho. •  Postorder

–  Aplica postorder al subarbol izquierdo, después al subarbol derecho, y después visita al nodo.

Page 17: Arboles en java

Formas de recorrer un Binary Tree

Existen tres formas de recorrer un Binary Tree. Cada una de ellas se aplica a un árbol binario y funcionan en forma recursiva.

•  Preorder

–  Visita el root, después aplica preorder al subárbol izquierdo y al subárbol derecho.

•  Inorder –  Aplica inorder al subarbol izquierdo, después visita al

root, y después aplica inorder al subarbol derecho. •  Postorder

–  Aplica postorder al subarbol izquierdo, después al subarbol derecho, y después visita al nodo.

Page 18: Arboles en java

Formas de recorrer un Binary Tree

Existen tres formas de recorrer un Binary Tree. Cada una de ellas se aplica a un árbol binario y funcionan en forma recursiva.

•  Preorder

–  Visita el root, después aplica preorder al subárbol izquierdo y al subárbol derecho.

•  Inorder –  Aplica inorder al subarbol izquierdo, después visita al

root, y después aplica inorder al subarbol derecho. •  Postorder

–  Aplica postorder al subarbol izquierdo, después al subarbol derecho, y después visita al nodo.

Page 19: Arboles en java

Formas de recorrer un Binary Tree

Existen tres formas de recorrer un Binary Tree. Cada una de ellas se aplica a un árbol binario y funcionan en forma recursiva.

•  Preorder

–  Visita el root, después aplica preorder al subárbol izquierdo y al subárbol derecho.

•  Inorder –  Aplica inorder al subarbol izquierdo, después visita al

root, y después aplica inorder al subarbol derecho. •  Postorder

–  Aplica postorder al subarbol izquierdo, después al subarbol derecho, y después visita al nodo.

Page 20: Arboles en java

Ejemplo 1

2 3

4

6 5

7 8

9

10

11

Page 21: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Page 22: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 1

Page 23: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 1,2

Page 24: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 1,2,4

Page 25: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 1,2,4,5

Page 26: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 1,2,4,5,6

Page 27: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 1,2,4,5,6,3

Page 28: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 1,2,4,5,6,3,7

Page 29: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 1,2,4,5,6,3,7,9

Page 30: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 1,2,4,5,6,3,7,9,11

Page 31: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 1,2,4,5,6,3,7,9,11,8

Page 32: Arboles en java

Preorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 1,2,4,5,6,3,7,9,11,8,10

Page 33: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Page 34: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 2

Page 35: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 2,5

Page 36: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 2,5,4

Page 37: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 2,5,4,6

Page 38: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 2,5,4,6,1

Page 39: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 2,5,4,6,1,7

Page 40: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 2,5,4,6,1,7.11

Page 41: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 2,5,4,6,1,7,11,9

Page 42: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 2,5,4,6,1,7,11,9,3

Page 43: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 2,5,4,6,1,7,11,9,3,10

Page 44: Arboles en java

Inorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 2,5,4,6,1,7,11,9,3,10,8

Page 45: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Page 46: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 5

Page 47: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 5,6

Page 48: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 5,6,4

Page 49: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 5,6,4,2

Page 50: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 5,6,4,2,11

Page 51: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 5,6,4,2,11,9

Page 52: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 5,6,4,2,11,9,7

Page 53: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 5,6,4,2,11,9,7,10

Page 54: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 5,6,4,2,11,9,7,10,8

Page 55: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 5,6,4,2,11,9,7,10,8,3

Page 56: Arboles en java

Postorder 1

2 3

4

6 5

7 8

9

10

11

Recorrido: 5,6,4,2,11,9,7,10,8,3,1