Está en la página 1de 21

Arboles(Trees)

Arboles
Arbolesbinarios
Recorridosderboles
Patrnmtodotemplate
Estructurasdedatospararboles

Arboles
unrbolrepresentaunajeraqua
ejemplos:
estructuraorganizativadeunaempresa

tabladecontenidodeunlibro

Arboles(1)
` SistemadeficherosdeUnixoDOS/Windows

Arboles(2)
Representacin:
Conjuntosanidados
Parntesisanidados
Indentacin
Grafo
Representacinmsusual:grafo

TerminologadeArboles
Aeselnodoraz
BeselpadredeDyE
CeselprimodeB
DyEsonloshijosdeB
D,E,F,G,Isonnodosexternoso
hojas
A,B,C,Hsonnodosinternos
Laprofundidad(nivel)deEes2
Laalturadelrboles3
ElgradodelnodoBes2
Propiedad:(#aristas)=(#nodos)1

Arbolesbinarios

Arbolordenado:elhijodecadanodoestordenado
Arbolbinario:rbolordenadocontodoslosnodosinternosde
grado2
Definicinrecursivaderbolbinario:
Unrbolbinarioes:
unnodoexterno(hoja)o
unnodointerno(laraz)ydosrbolesbinarios(subrbol
izquierdoysubrbolderecho)

EjemplosdeArbolesBinarios
expresinaritmtica

roespecial

EjemplosdeArbolesBinarios
rbolesdedecisin

PropiedadesdeArbolesBinarios
(#nodosexternos)=(#nodosinternos)+1
(#nodosniveli)2i
(#nodosexternos)2altura
(altura)log2(#nodosexternos)
(altura)log2(#nodos)1
(altura)(#nodosinternos)((#nodos)1)/2

TDAsparaArboles
Mtodoscontenedorgenricos
size(),isEmpty(),elements()
Mtodoscontenedorposicionales
positions(),swapElements(p,q),replaceElement(p,e)
Mtodosconsulta
isRoot(p),isInternal(p),isExternal(p)
Mtodosacceso
root(),parent(p),children(p)
Mtodosactualizacin
especficodela
aplicacin

10

TDAsparaArbolesBinarios
Mtodosacceso
leftChild(p),rightChild(p),sibling(p)
mtodosactualizacin
expandExternal(p),removeAboveExternal(p)
otrosmtodosespecficosdelaaplicacin

11

Recorridoderboles(1)

recorridopreorder

AlgoritmopreOrder(v)
visitarnodov
foreachhijowdevdo
realizarrecursivamentepreOrder(w)

Ejm:lecturadeundocumentodesdeeliniciohastaelfinal

12

Recorridoderboles(2)

recorridopostorder

AlgoritmopostOrder(v)
foreachhijowdevdo
realizarrecursivamentepostOrder(w)
visitarnodov

comandodu(diskusage)deUnix

13

EvaluacindeExpresiones
Aritmticas

especializacinderecorridopostorder

AlgoritmoevaluateExpression(v)
ifvesunnodoexterno
returnlavariablealmacenadaenv
else
asignaraoeloperadoralmacenadoenv
xevaluateExpression(leftChild(v))
yevaluateExpression(rightChild(v))
returnxoy

14

Recorridoderboles(3)

recorridoinorderdeunrbolbinario

AlgoritmoinOrder(v)
realizarrecursivamenteinOrder(leftChild(v))
visitarnodov
realizarrecursivamenteinOrder(rightChild(v))

impresindeunaexpresinaritmtica
especializacindeunrecorridoinorder
print(antesderecorrerelsubrbolizquierdo
print)antesderecorrerelsubrbolderecho

15

Recorridoderboles(4)
1
3

2
4

10

Inorden:84921051637
Preorden:12489510367
Postorden:89410526731

16

RecorridodeEulerenArboles
Binarios

Recorridogenricodeunrbolbinario
losrecorridospreorder,inorder,ypostordersoncasosespeciales
delrecorridodeEuler
caminaralrededordelrbolyvisitarcadanodotresveces:
alaizquierda
desdeabajo
aladerecha

17

PatrnmtodoTemplate

Mecanismodecmputogenricoquepuedeserespecializado
redefiniendociertospasos.
implementadopormediodeunaclaseabstractadeJavacon
mtodosquepuederserredifinidosporsussubclases

18

EspecializandoelRecorrido
GenricoparaArbolBinario

Imprimiendounaexpresinaritmtica

publicclassPrintExpressionTraversalextendsBinaryTreeTraversal{
...
protectedvoidexternal(Positionp,TraversalResultr){
System.out.print(p.element());

}
protectedvoidleft(Positionp,TraversalResultr){
System.out.print("(");

}
protectedvoidbelow(Positionp,TraversalResultr){
System.out.print(p.element());

}
protectedvoidright(Positionp,TraversalResultr){
System.out.print(")");

19

EstructuradeDatosparaArboles
Binariosmediantenodosenlazados

20

RepresentacindeArboles
Generales

rbolT

ArbolbinarioT'representaT

21