Title: Arboles
1Arboles
Ing. Andrea Quan
2Arboles
- Un arbol es una estructura de datos compuesta por
vertices conectados entre si por medio de arcos
3Rooted Tree
- Un rooted tree es un arbol en donde existe un
vertice al que se le llama raiz (root). - A los vertices en un rooted trees se les llaman
nodos.
4Rooted Tree
5Rooted Tree
6Rooted Tree
7Rooted Tree
8Rooted Tree
9Rooted Tree
10Rooted Tree
HOJAS
11Binary 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 binary
tree es un arbol compuesto por un nodo raiz, el
cual tiene un subarbol binario izquierdo, y un
subarbol derecho.
12Binary Tree
13Representación de un Binary Tree
- Nodo
- Referencia al padre
- Referencia al hijo izquierdo
- Referencia al hijo derecho
- Binary Tree
- Referencia a raiz
14Representación de un Binary Tree
RAIZ
15Clase BTNode
class BTNode BTNode padre BTNode left,
right public BTNode ( BTNode padre)
this.padre padre this.left this.right
null
16Clase BinaryTree
public class BinaryTree public BTNode
root public BinaryTree ( ) this.root
null metodos
17Formas de recorrer un binary tree
- Preorder
- Recursiva. Visita primero al padre, después al
hijo izquierdo y después al hijo derecho. - Inorder
- Recursiva. Visita primero al hijo izquierdo,
después al padre, y después al hijo derecho. - Postorder
- Recursiva. Visita primero al hijo izquierdo,
después al hijo derecho, después al padre.
18Ejemplo
19Preorder
Recorrido 1
20Preorder
Recorrido 1,2
21Preorder
Recorrido 1,2,4
22Preorder
Recorrido 1,2,4,5
23Preorder
Recorrido 1,2,4,5,6
24Preorder
Recorrido 1,2,4,5,6,3
25Preorder
Recorrido 1,2,4,5,6,3,7
26Preorder
Recorrido 1,2,4,5,6,3,7,9
27Preorder
Recorrido 1,2,4,5,6,3,7,9,11
28Preorder
Recorrido 1,2,4,5,6,3,7,9,11,8
29Preorder
Recorrido 1,2,4,5,6,3,7,9,11,8,10
30Preorder
public void preorder (BTNode nodo)
nodo.visit() this.preorder(nodo.left) this.
preorder(nodo.right)
31Inorder
32Inorder
Recorrido 2
33Inorder
Recorrido 2,5
34Inorder
Recorrido 2,5,4
35Inorder
Recorrido 2,5,4,6
36Inorder
Recorrido 2,5,4,6,1
37Inorder
Recorrido 2,5,4,6,1,7
38Inorder
Recorrido 2,5,4,6,1,7.11
39Inorder
Recorrido 2,5,4,6,1,7,11,9
40Inorder
Recorrido 2,5,4,6,1,7,11,9,3
41Inorder
Recorrido 2,5,4,6,1,7,11,9,3,10
42Inorder
Recorrido 2,5,4,6,1,7,11,9,3,10,8
43Inorder
public void inorder (BTNode nodo)
this.inorder(nodo.left) nodo.visit() this.i
norder(nodo.right)
44Postorder
45Postorder
Recorrido 5
46Postorder
Recorrido 5,6
47Postorder
Recorrido 5,6,4
48Postorder
Recorrido 5,6,4,2
49Postorder
Recorrido 5,6,4,2,11
50Postorder
Recorrido 5,6,4,2,11,9
51Postorder
Recorrido 5,6,4,2,11,9,7
52Postorder
Recorrido 5,6,4,2,11,9,7,10
53Postorder
Recorrido 5,6,4,2,11,9,7,10,8
54Postorder
Recorrido 5,6,4,2,11,9,7,10,8,3
55Postorder
Recorrido 5,6,4,2,11,9,7,10,8,3,1
56Postorder
public void postorder (BTNode nodo)
this.postorder(nodo.left) this.postorder(nodo
.right) nodo.visit()