EDA_Aulas

Embed Size (px)

DESCRIPTION

informatica

Citation preview

  • 7/21/2019 EDA_Aulas

    1/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS

    Classes, Objectos, Arrays/Vectores,Herana, Polimorfsmo, Ficheiros

  • 7/21/2019 EDA_Aulas

    2/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 2

    Classe, Objectos [1], cap Programao orientada a objectos

    Programas funcionam custa de entidades,objectos

    Objectos so capazes de desempenhar tarefas

    Objecto

    Identidade (identicar !ados ou atributos (caracterizar "#todos (comportamento, ac$es, funciona%idades

    &ntes de'ese denir a c%asse (um mo%de

    )ue pode ser usado para criar objectos

  • 7/21/2019 EDA_Aulas

    3/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 3

    !efnir "ma Classepub%ic c%ass NomeDaClasse*

    ++%ista de atributos pri'ate int atributo pri'ate -oat atributo . ++%ista de metodospub%ic 'oid metodo * ++instrunoes do m#todo /pub%ic 'oid metodo . * ++instrunoes do m#todo

    //

    Exemplo

    public class Pessoa

    {

    //lista de atributos

    private String bi

    private String nome

    private Date dataNasc

    private String sexo

    //lista de metodos

    public Pessoa (String numBi, String nomeCompleto

    Date dataAniv, Char sexoDaPessoa

    { //instrun!oes do m"todo

    bi #numBi$

    nome #nomeCompleto$

    dataNasc#dataAniv$

    sexo #sexoDaPessoa$

    %

    public void determina&dade (Date dataNasc

    // {

    //instrun!oes do m"todo

    %

    %

  • 7/21/2019 EDA_Aulas

    4/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 4

    Constr"tor Exemplo pub%ic c%ass Pessoa *

    ++%ista de atributos pri'ate 0tring bi pri'ate 0tring nome pri'ate !ate data1asc pri'ate 0tring se2o ++%ista de metodos pub%ic Pessoa (0tring num3i, 0tring

    nome4omp%eto

    !ate data&ni', 4har se2o!aPessoa * ++instrunoes do m#todo bi 5num3i6 nome 5nome4omp%eto6 data1asc5data&ni'6 se2o 5se2o!aPessoa6 / pub%ic 'oid determinaIdade (!ate data1asc

    ++ * ++instrunoes do m#todo / /

    4%asse7 Pessoa Objectos7 8889, Matusse, .

    .88. 88:;2,Jose Joao, 88;

  • 7/21/2019 EDA_Aulas

    5/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 5

    Cria#o $e objectos !ec%are o objecto com se fosse uma

    'ar simp%es nome!a4%asse nome!oObjecto6

    Int 26 0tring nome6 Pessoa joao6 Pessoa joao, matusse6

    Operador >new? nome!oObjecto 5 ne@ nome!a4%asse (parametros

    joao 5 ne@ Pessoa (88:;2,Jose Joao, 88;

  • 7/21/2019 EDA_Aulas

    6/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 6

    &presentao do =raba%ho em Arupo

  • 7/21/2019 EDA_Aulas

    7/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 7

    Arrays/Vectores [1], cap % int 2 so pode conter um Bnico 'a%or

    'arias 'aria'eisC &rraDs+tabe%as unidimensionais

    !ec%arao7 Int EF notas6

    4riao7 notas 5 ne@ intE;F6 &cesso

  • 7/21/2019 EDA_Aulas

    8/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 8

    &'erc(cio

    E8F EF EGF EH

  • 7/21/2019 EDA_Aulas

    9/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 9

    . !ena a c%asse estudante

    H 4rie um arraD (turma deestudantes

  • 7/21/2019 EDA_Aulas

    10/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 10

    Vectores Semelha!a "om a a##a$

    %e"to# po&e "#es"e# Tem "apa"'&a&e (ue po&e "#es"e# "om as e"ess'&a&es Tem tamaho )s'*e+ (ue o # a"tual &e elemetos

    %e"to# po&e a#ma*ea# elemetos &e t'pos&'-e#etes Ca&a elemeto um o.je"to )#e-e#e"'a+,

    Nao po&e /ua#&a# o.je"tos &e t'pos .as'"os ) 't, &ou.le,et"0+ 1

    Use "ast'/ )t$pe "asts+ ou "lasses2#appe# os %e"to#s %e"to# ao estao '"lu'&as a l'/ua/em .ase

    Impo#te a pa"3a/e ja4a0ut'l %e"to#es s5o #elat'4amete letos %6#'os mto&os

  • 7/21/2019 EDA_Aulas

    11/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 11

    4rie um 'ector de inteiros

    4o%o)ue H na posio Meia para uma 'ariL'e% o 'a%or da posio H

    : 4rie o 'ector (turma de estudantes

  • 7/21/2019 EDA_Aulas

    12/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 12

    Herana [1], cap 11

  • 7/21/2019 EDA_Aulas

    13/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 13

    Herana erana

    Qeuti%izao de 0oft@are 4riao de no'as c%asses a partir de c%asses

    e2istentes &bsor'em dados e comportamentos das c%asses e2istentes Rnri)uecem com no'as capacidades

    0ubc%asses estendem as superc%asses 0ubc%asse

    Grupos mais especializados de Objectos

    Comportamentos herdados da superclasse

    Podem ser personalizados Comportamentos adicionais

  • 7/21/2019 EDA_Aulas

    14/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 14

    Herana ierar)uia de 4%asses

    erana !ireta erdada e2p%icitamente (um nS'e% acima na hierar)uia

    erana Indireta erdada de dois ou mais nS'eis acima na hierar)uia

    erana 0imp%es erda de uma Bnica superc%asse

    erana "B%tip%a erda de mB%tip%as superc%asses

  • 7/21/2019 EDA_Aulas

    15/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 15

    Herana &bstrao

    Toco nas associa$es entre os Objectos no sistema ># um? 's >tem um?

    ># um? erana

    Objecto da subc%asse tratado como um Objecto da superc%asse R2emp%o7 4arro um'eScu%o As propriedades e comportamento de um veculo so tambm propriedades e

    comportamentos de carros

    >tem um? 4omposio

    Um Objecto cont#m um ou mais Objectos de outras c%assescomo membros

    R2emp%o7 4arro tem um'o%ante

  • 7/21/2019 EDA_Aulas

    16/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 16

    )"perclasses e )"bclasses

    0uperc%asses e subc%asses Objecto de uma c%asse V# umV Objecto de outra

    c%asse R2emp%o7 Um QetWngu%o # um Nuadri%Ltero

    A Classe Retnguloherda da Classe Quadriltero

    Quadriltero : superclasse

    Retngulo: subclasse & 0uperc%asse tipicamente representa um conjunto

    maior de Objectos do )ue a c%asse herdeira R2emp%o7

    superclasse:Veculo

    Carros cami!es barcos bicicletas """ subclasse: Carro

    Conjunto menor e mais espec#ico de veculos

    * ) l ) b l

  • 7/21/2019 EDA_Aulas

    17/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 17

    * )"perclasses e )"bclasses+Cont-

    R2emp%os de erana

    Classe Base Classe Derivada

    Estudante EstudanteGraduao

    EstudanteMestrado

    Forma

    Geomtrica

    Crculo

    TringuloRetngulo

    Emprstimo Emprestimo!uisicaoCarro

    EmprestimoRe"ormaResidencia

    Emmprestimo!uisicaoCasaPropria

    Empregado Pro"essor

    FuncionarioTecnicodministrati#o

    Conta ContaCorrenteContaPoupana

  • 7/21/2019 EDA_Aulas

    18/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 18

    )"perclasses e )"bclasses +Cont- ierar)uia de erana

    Qe%a$es de erana7 Rstrutura hierLr)uica emLr'ore

    4ada c%asse pode ser 4%asse 3ase

    $ornece dados%comportamento para as outras classes

    OU 4%asse !eri'ada

    &erda dados%comportamento de outras classes

  • 7/21/2019 EDA_Aulas

    19/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 19

    Pessoa

    Estudante Funcionario

    E_MestradoE_Graduo

  • 7/21/2019 EDA_Aulas

    20/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 20

    .o$ifca$ores $e isibili$a$e Public

    priate protectedaccess

    1S'e% intermediLrio de proteo entrepu$licepri#ate

    membrosprotectedna superc%asse soacessS'eis a

    m#todos na superc%asse m#todos nas subc%asses m#todos nas c%asses no mesmo pacote

    "#todos nas subc%asses acessam membros nasuperc%asse

    Pa%a'ra reser'ada supere um ponto (

  • 7/21/2019 EDA_Aulas

    21/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 21

    Herana +e'emplo- abstract c%ass Pessoa *

    pub%ic Pessoa(0tring n * nome 5 n6 / pub%ic abstract 0tring get!escricao(6 pub%ic 0tring get1ome( * return nome6 /

    pri'ate 0tring nome6 /

  • 7/21/2019 EDA_Aulas

    22/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 22

    Herana +e'emplo- c%ass Rstudante e2tends Pessoa *

    pub%ic Rstudante(0tring n, 0tring m * super(n6 curso 5 m6 / pub%ic 0tring get!escricao( * return VUm estudante cursando em 7VXcurso6 /

    pri'ate 0tring curso6 /

    + l -

  • 7/21/2019 EDA_Aulas

    23/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 23

    Herana +e'emplo- c%ass Tuncionario e2tends Pessoa * pri'ate doub%e sa%ario6 pu.l'"7u"'oa#'o)St#'/n, doub%e s * super(n6 sa%ario 5 s6 / pu.l'" &ou.le /etSala#'o( * return sa%ario6

    / pu.l'" 4o'& aumetaSala#'o)&ou.lepercent * doub%e aumento 5 sa%arioYpercent+886 sa%arioX5aumento6 / pu.l'" St#'/ /etDes"#'"ao(

    * return VO empregado e gerenteV6 / /

    P li f

  • 7/21/2019 EDA_Aulas

    24/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 24

    Polimorfsmo pub%ic c%ass Pessoa=est *

    pub%ic static 'oid main(0tringEF args * PessoaEF p 5 ne@ PessoaE.F6 pE8F 5 ne@ Tuncionario(V&ntonioV,:8886 pEF 5 ne@ Rstudante(V"ariaV,VInformaticaV6

    for(int i586iZp%ength6iXX * Pessoa pes 5 pEiF6 0Dstemoutprint%n(pesget1ome(XV ,

    VXpesget!escricao(6 / / /

    A $ [1] 1

  • 7/21/2019 EDA_Aulas

    25/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 25

    A0en$a [1], cap 1 Ticheiros

    Ticheiros de te2to Ticheiros de objectos 0eria%izao de objectos R2cep$es

    2 t $ #

  • 7/21/2019 EDA_Aulas

    26/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 26

    2ntro$"#o &s 'ariL'eis e objectos armazenados

    na mem[ria Q&" perdemse no m dae2ecuo de um programa Uso de dispositi'os de

    armazenamento Ticheiros 0tream+-u2o conceito ja'a para oar)ui'o e %eitura de dados de ch Nuais so os tipos de chC 4omo dec%ararC Nue

    bib%iotecaC Nue m#todos possuemC

    Fi h i $ t t

  • 7/21/2019 EDA_Aulas

    27/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 27

    Ficheiros $e te'to 0[ podem conter caracteres, 4riao

    \a'aio contem c%asses para a manip de ch Ti%e f 5 ne@ Ti%e (nome!oTicheiro6

    Onde a c%asse Ti%e representa ch em disco nome!oTicheiro # um 0tring6

    0e f e2istir7 "#todos7 de%ete(6 e2ists(6 %ength(6 rename(6

    4omo criar um %e no discoC MerC Rscre'erC Use outras c%asses especia%izadas

    Ti%eQeader frd5 ne@ Ti%eQeader(nome!oTicheiro6

    Ti%e]riter f@t5 ne@ Ti%e]riter(nome!oTicheiro6 Os dados so tratados caracter a caracter6

    Fi h i $ t t + t -

  • 7/21/2019 EDA_Aulas

    28/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 28

    Ficheiros $e te'to +cont-=ratamento %inha a %inha

    Use outro objecto especia%izado com as c%asses7

    3u^eredQeader fQ 5 ne@ 3u^eredQeader (frd6 3u^ered]riter f] 5 ne@ 3u^ered]riter (fr@6

    0o mais con'enientes para cheiros6

    & 4%asse Ticheiro!e=e2to "#todos

    abreMeitura(6 %erMinha(6 %er1umero(6 abreRscrita(6 escre'erMinha(6 escre'er1umero(6 fechaMeitura(6 fechaRscrita(

    & emplo import ja'aioY6 pub%ic c%ass R2emp%oTicheiros

  • 7/21/2019 EDA_Aulas

    29/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 29

    &'emplo * pub%ic static 'oid main(0tring argsEF thro@s IOR2ception * 0Dstemoutprint%n(V R2emp%oTicheirosV6 Ticheiro!e=e2to f 5 ne@ Ticheiro!e=e2to(6 fabreRscrita(Vtestet2tV6 for (int i586 iZ86iXX * fescre'er1umero(iYi6 / ffechaRscrita(6 0Dstemoutprint%n(V Nuadrado dos numeros de a

  • 7/21/2019 EDA_Aulas

    30/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 30

    Ficheiros $e Objectos Os dados no cheiro representam objectos

    =ratamento de objectos Use ObjectOutput0tream e ObjectInput0tream ObjectOutput0tream

    ]riteObject( organiza os dados do objectos para oen'io se)uencia% para o cheiro

    ObjectInput0tream readObject( %e os dados de entrada e reconstitui o objecto inicia% ]riteObject(+QeadObject( para objectos

    predenidos pub%ic c%ass Tu#ma imp%ements seria%izab%e

    Tu#mafoi denido pe%o uti%izador !e'ese autorizar a reorganizacao para o armazenamento no

    cheiro

    Ficheiros $e Objectos +Cont -

  • 7/21/2019 EDA_Aulas

    31/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 31

    Ficheiros $e Objectos +Cont- & 4%asse Ticheiro!eObjectos

    "etodos abreMeitura(f6 abreRscrita(f6 MeObjecto(6 escre'eObjecto(o6 fechaMeitura(6 fechaRscrita(6

    &'emplo import ja'aioY6

    pub%ic c%ass Aere=urma_*

  • 7/21/2019 EDA_Aulas

    32/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 32

    &'emplo * pub%ic static 'oid ma'(0tring EF args thro@s IOR2ception, 4%ass1otToundR2ception * 0tring nome6 int esco%ha6

    =urma t5ne@ =urma(6 ++Me =urma a partir do Ticheiro

    Ticheiro!eObjectos fo 5ne@ Ticheiro!eObjectos(6 foabreMeitura(Vturmat2tV6 t5(=urma fo%eObjecto(6 fofechaMeitura(6 do * s@itch (esco%ha * case 7 tjuntaRstudante(6 brea`6 case .7 0Dstemoutprint(V1ome do Rstudante7 V6 nome5Meread0tring(6

    ++te%iminaRstudante(nome6 brea`6 case H7 timprime=urma(6 brea`6 case 7 0Dstemoutprint(V1ome do Rstudante7 V6 nome 5 Meread0tring(6 ++tprocuraRstudante(nome6 brea`6 case :7 tordena=urma(6 brea`6 ++ &ntes de sair, guarda os dados no cheiro

    case 87 foabreRscrita(VturmadatV6

    foescre'eObjecto(t6 fofechaRscrita(6 0Dsteme2it(86 / / @hi%e (esco%ha586 / /

    &'cep3es

  • 7/21/2019 EDA_Aulas

    33/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 33

    &'cep3es &%go )ue ocorre na e2ecuo de um m#todo e

    )ue o impede de funcionar como esta'a

    pre'isto !etecao e tratamento de e2cep$es

    =hro@s dec%ara a propagacao das e2cepcoes, ie, o metodonao consegue trata%a6

    R2emp%o pub%ic 'oid a.#eLe'tu#a(0tring nome!oTicheiro thro@sIOR2ception

    '

    i( ) ne* Object+nput(tream ,ne* $ile+nput(tream,nome-o$icheiro../

    0

    &'cep3es

  • 7/21/2019 EDA_Aulas

    34/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 34

    &'cep3es 1o gera%, )uando ha e2cepo7

    Ignora%a7 o programa termina com uma msg6

    =rata%a no m#todo onde ocorre (ha info=rata%a noutro m#todo da cadeia (propagao R2emp%o

    pub%ic boo%ean a.#eLe'tu#a(0tring nome!oTicheiro'

    1r2 'i( ) ne* Object+nput(tream ,ne* $ile+nput(tream,nome-o$icheiro../

    return true/

    0 catch ,+O34ception e. '

    return #alse/

    00

    A Classe Ficheiro!eObjecto

  • 7/21/2019 EDA_Aulas

    35/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 35

    A Classe Ficheiro!eObjecto pub%ic 'oid a.#eLe'tu#a(0tring nome!oTicheiro thro@s IOR2ception * i0 5 ne@ ObjectInput0tream (ne@ Ti%eInput0tream(nome!oTicheiro6 /

    pub%ic 'oid a.#eEs"#'ta(0tring nome!oTicheiro thro@s IOR2ception * o0 5 ne@ ObjectOutput0tream (ne@ Ti%eOutput0tream(nome!oTicheiro6 / pub%ic Object leO.je"to( thro@s IOR2ception, 4%ass1otToundR2ception * return i0readObject(6 /

    pub%ic 'oid es"#e4eO.je"to(Object o thro@s IOR2ception * o0@riteObject(o6 / pub%ic 'oid -e"haLe'tu#a( thro@s IOR2ception * i0c%ose(6 / pub%ic 'oid -e"haEs"#'ta( thro@s IOR2ception * o0c%ose(6 /

    Abstrac#o

  • 7/21/2019 EDA_Aulas

    36/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 36

    Abstrac#o !enio

    =ipos de &bstraco=ipo &bstrato de !ados (=&! Imp%ementao de um =&!

    R2ercScios PrLticos edauemgmai%com+edauem.88J

    !efni#o 4 Abstrac#o

  • 7/21/2019 EDA_Aulas

    37/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 37

    !efni#o 4 Abstrac#o A.st#a"!5o# o princSpio de ignorar os

    aspectos de um assunto no re%e'antespara o prop[sito em )uesto, tornandopossS'e% uma concentrao maior nosassuntos principais

    4onsiste na se%eco em )ue # efectuadape%o informLtico de a%guns aspectos,ignorando outros

    Pense!ena a c%asse Rstudante do !"IRstudante do "estrado (!"I, 0uia

    5ipos $e Abstrac#o

  • 7/21/2019 EDA_Aulas

    38/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 38

    5ipos $e Abstrac#o R2istem duas formas de abstraco7

    &bstraco de Procedimentos &bstraco de !ados

    &bstraco de Procedimentos 4onsiste em considerar um procedimento com

    uma operao bem denida como a%go Bnico,mesmo )ue uti%ize outros procedimentosinternos

    &bstraco de !ados 4onsiste em denir um tipo de dados conforme

    as opera$es ap%icL'eis aos objectos deste tipo Rstes objectos s[ podem ser modicados eobser'ados atra'#s destas opera$es

    &'emplo $e 5A!46ista

  • 7/21/2019 EDA_Aulas

    39/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 39

    &'emplo $e 5A! 6ista & %ista, em \a'a, # como um arraD R%a fornece

    m#todos para e2trair o e%emento de um

    determinado Sndice, e para substituir oe%emento de um determinado Sndice "as,diferente de um arraD, e%a tamb#m possuim#todos para inserir ou remo'er um e%ementoem um determinado Sndice Rm \a'a o tipo

    List # uma interface com muitos m#todospublic class List {public List ();public void add (int i, Object e);public void set (int i, Object e);public void remove (int i);

    public int size ();public Object get (int i);

    }

    A manipulao de dados realizada

    apenas atras de mtodos!"ual#uer o$%e&to do tipo lista s' pode so(rer

    modi(i&a)es atras dessas opera)es!

    !efni#o $e "m 5A!

  • 7/21/2019 EDA_Aulas

    40/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 40

    !efni#o $e "m 5A! Projectar um tipo abstracto en'o%'e a

    esco%ha de boas opera$es e adeterminao de como e%as de'em secomportar &%gumas boas prLticas so7 me%hor ter a%gumas poucas opera$es simp%es

    )ue podem ser combinadas para rea%izarfun$es mais comp%e2as, do )ue ter um montede opera$es comp%e2as

    4ada operao de'e ter um prop[sito bemdenido, e ter um comportamento coerente aoin'#s de uma montanha de casos especiais noseu c[digo

    !efni#o $e "m 5A! +Cont -

  • 7/21/2019 EDA_Aulas

    41/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 41

    !efni#o $e "m 5A! +Cont- O conjunto de opera$es de'e ser ade)uado6

    de'e ha'er o suciente para se rea%izar o tipo de

    computao )ue os c%ientes pro'a'e%mente iroprecisar Um bom teste # 'ericar se todas aspropriedades de um objecto de um determinadotipo podem ser acedidas Por e2emp%o, em Listse no hou'esse a operao get, no serSamos

    capazes de encontrar )uais so os e%ementos da%ista & obteno de informa$es bLsicas node'e ser uma comp%icao para o c%iente Om#todo size, por e2emp%o, no # estritamentenecessLrio, pois poderSamos ap%icar o m#todo

    get sobre 'a%ores incrementais de Sndice, o )ue #ineciente e incon'eniente

    5A! Ficheiro!eObjectos

  • 7/21/2019 EDA_Aulas

    42/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 42

    5A! Ficheiro!eObjectospub%ic interface Ticheiro*

    pub%ic 'oid abreMeitura (0tringnome!oTicheiropub%ic 'oid abreRscrita (0tringnome!oTicheiro

    pub%ic Object %er!ados (pub%ic 'oid escre'e!ados (Object opub%ic 'oid fechaMeitura(

    pub%ic 'oid fechaRscrita(/

    2mplementa#o $o 5A!

  • 7/21/2019 EDA_Aulas

    43/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 43

    2mplementa#o $o 5A! import ja'aioY6 pub%ic c%ass Ticheiro!eObjectos imp%ements Ticheiros * pri'ate ObjectInput0tream i06 pri'ate ObjectOutput0tream o06

    pub%ic boo%ean abreMeitura (0tring nome!oTicheiro thro@s IOR2ception * trD* i0 5 ne@ ObjectInput0tream (ne@ Ti%eInput0tream(nome!oTicheiro6 return true6 /catch(IOR2ception e* return fa%se6 / / pub%ic 'oid abreRscrita (0tring nome!oTicheiro thro@s IOR2ception * o0 5 ne@ ObjectOutput0tream (ne@ Ti%eOutput0tream(nome!oTicheiro6 /

    pub%ic Object %eObjecto ( thro@s IOR2ception, 4%ass1otToundR2ception * return i0readObject(6 / pub%ic 'oid escre'eObjecto (Object o thro@s IOR2ception * o0@riteObject(o6 / pub%ic 'oid fechaMeitura( thro@s IOR2ception * i0c%ose(6

    / pub%ic 'oid fechaRscrita( thro@s IOR2ception * o0c%ose(6 / /

  • 7/21/2019 EDA_Aulas

    44/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS

    6istas

    6istas

  • 7/21/2019 EDA_Aulas

    45/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 45

    Mistas 0imp%esmente Migadas

    0e)uencia de objectos a%ocados dinamicamente,cada )ua% fazendo referencia ao seu sucessor na%ista EPreiss, .888, pag KF

    Mistas !up%amente Migadas

    Conceitos

  • 7/21/2019 EDA_Aulas

    46/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 46

    Uma Lista Ligadana sua forma

    simp%es # uma co%eco de nodos )uejuntos denem uma ordem %inear 4ada nodo # um objecto composto7

    Qeferencia a um e%emento

    Qeferencia, next, para o pr[2imo nodo

    Munguanaze

    next

    Clavia

    next

    Pedro

    next

    Ilda

    next

    headtail

    Conceitos

  • 7/21/2019 EDA_Aulas

    47/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 47

    ead!"abe#a o primeiro e%emento6

    $ail!cauda B%timo e%emento (a)ue%e)ue tem nullna referencia next6 Os e%ementos na %ista esto numa

    determinada ordem %inear, denidape%a se)uncia dos %in`s nextentre osnodos

    & %ista usa espao proporciona% aos

    e%ementos da %ista

    Varia3es $as 6istas

  • 7/21/2019 EDA_Aulas

    48/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 48

    ead

    ead

    =ai%

    ead

    tai%

    (a

    (b

    (c

    (dSet'ela

    ead

    ead

    =ai%

    ead

    tai%

    Set'ela

    &'ercicios

  • 7/21/2019 EDA_Aulas

    49/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 49

    0ugira as opera$es sobre uma %ista

    "ostre gracamente ocomportamento das di'ersas %istascom a e2ecuo de a%gumasopera$es

    2mplementa#o

  • 7/21/2019 EDA_Aulas

    50/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 50

    p

    *ista +imples

    ,a- ,$- ,&- ,d- !!!!

  • 7/21/2019 EDA_Aulas

    51/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 51

    import ja'auti%Iterator6. pub%ic interface Mista

    H * pub%ic boo%ean isRmptD(6: pub%ic int size(6; pub%ic Object get(int i thro@s

    Inde2OutOf3oundsR2ception6K pub%ic int nd(Object 26

    J pub%ic boo%ean e)ua%s(Mista outra6

  • 7/21/2019 EDA_Aulas

    52/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 52

    . pri'ate c%ass 1odoH *

    ++'aria'eis de instancia: pri'ate Object e%em6 ++Rndereco )ue aponta para o objecto uti%; pri'ate 1odo ne2t6 ++ponteiro para o no seguinteK ++construtoresJ pri'ate 1odo(Object 2

  • 7/21/2019 EDA_Aulas

    53/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 53

    pub%ic 'oid add(Object 2

    . *H ++insere 2 na %ista 1odo p5ne@ 1odo(2,nu%%6

    : if(isRmptD( inicio5p6; e%se mne2t5p6K m5p6

    J numR%emXX6

  • 7/21/2019 EDA_Aulas

    54/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 54

    "ostre gracamente os passos da

    insero de a, f, g, h,c

    aead ( . / &=ai%

    ead

    =ai%

    ead

    =ai%

    aead=ai%

    (

    a

    !!!!

    1

    1 2

    1 52! 34

    8emo#o

  • 7/21/2019 EDA_Aulas

    55/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 55

    pub%ic Object remo'e(int i *++remo'e e retorna o e%emento em i if(iZ8i5numR%em thro@ ne@ Inde2OutOf3oundsR2ception(6

    Object antigo6 ++e%em a remo'er e de'o%'er if(i558 ++se for para remo'er o primeiro * antigo5inicioe%em6 if(inicio55m m5nu%%6 inicio5inicione2t6 / e%se * 1odo anterior5get1odo(i6 1odo coitado5anteriorne2t6++igua% a get1odo(i antigo5coitadoe%em6 anteriorne2t5coitadone2t6 if(coitado55m m5anterior6 /

    numR%em6 return antigo6 /

    !efni#o $a 2nter9ace 6ista

  • 7/21/2019 EDA_Aulas

    56/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 56

    pub%ic interface Mista * pub%ic boo%ean isRmptD(6

    ++retorna true se a %ista for 'azia pub%ic int size(6 ++retorna o numero de e%ementos e2istentes na %ista pub%ic Object get(int i thro@s Inde2OutOf3oundsR2ception6

    ++retorna o objecto com indice i na %ista ++ou nu%% se nao ha esse e%emento ++dispara uma e2cepcao se o indice introduzido ++esti'er fora do inter'a%o 8numR%em pub%ic int nd(Object 26

    ++retorna a posicao i da primeira ocorrencia ++de um objecto na %ista ++ou se 2 nao esat na %ista

    !efni#o $a 2nter9ace 6ista +cont-

  • 7/21/2019 EDA_Aulas

    57/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 57

    pub%ic boo%ean e)ua%s(Mista outra6 ++retorna true se a nossa %ista e a outra possuem

    ++o mesmo comprimento e cada e%emento da nossa %ista e igua% ++ao e%emento correspondente da outra %ista pub%ic 'oid c%ear(6 ++torna a %ista 'azia6igua% a ma`eRmptD pub%ic 'oid set(int i,Object 2 thro@s Inde2OutOf3oundsR2ception6

    ++substitui por 2 o e%emento na posicao i da %ista ++ou nao faz nada se e%e nao esti'er na %ista ++dispara uma e2cepcao se o indice introduzido ++esti'er fora do inter'a%o 8numR%em pub%ic 'oid add(int i,Object 2 thro@s

    Inde2OutOf3oundsR2ception6 ++insere 2 na posicao i ++dispara uma e2cepcao se o indice introduzido ++esti'er fora do inter'a%o 8numR%em

    !efni#o $a 2nter9ace 6ista +cont-

  • 7/21/2019 EDA_Aulas

    58/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 58

    pub%ic 'oid addTim(Object 26 ++insere 2 no m da %ista pub%ic Object remo'e(int i thro@s

    Inde2OutOf3oundsR2ception6 ++remo'e e retorna o e%emento na posicao i ++ou retorna nu%% se ta% e%emento nao e2iste ++dispara uma e2cepcao se o indice introduzido

    ++esti'er fora do inter'a%o 8numR%em /++m da interface Mista

    2mplementa#o $e 6istas

  • 7/21/2019 EDA_Aulas

    59/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 59

    import ja'auti%Y6

    pub%ic c%ass MistaMigada imp%ements Mista * pri'ate 1odo inicio6 pri'ate 1odo m6 pri'ate int numR%em6 pub%ic MistaMigada(

    * inicio5m5nu%%6 numR%em586 / pub%ic boo%ean isRmptD(

    * return inicio55nu%%6 /

    2mplementa#o $e 6istas +cont-

  • 7/21/2019 EDA_Aulas

    60/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 60

    pub%ic int size( * return numR%em6

    / pub%ic Object get(int i thro@s Inde2OutOf3oundsR2ception * if(iZ8i5numR%em thro@ ne@ Inde2OutOf3oundsR2ception(6 1odo p5get1odo(i6 return pe%em6

    / pri'ate 1odo get1odo(int i * 1odo p5inicio6 for(int j586jZi6jXX p5pne2t6 return p6 /

    2mplementa#o $e 6istas +cont-

  • 7/21/2019 EDA_Aulas

    61/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 61

    pub%ic int nd(Object 2 thro@s 1o0uchR%ementR2ception * if(isRmptD(

    thro@ ne@ 1o0uchR%ementR2ception(VTind em %ista 'aziaV6 intcont56 for(1odo p5inicio6p5nu%%6p5pne2t * contXX6 if(2e)ua%s(pe%em return cont6 / return 6 /++m do nd

    pub%ic boo%ean e)ua%s(Mista outra * MistaMigada %ista.5(MistaMigadaoutra6 if(numR%em 5%ista.numR%em return fa%se6 for(1odo p5inicio,)5%ista.inicio6p5nu%%6p5pne2t,)5)ne2t * if(pe%eme)ua%s()e%em return fa%se6 / ++m do for return true6 /

    2mplementa#o $e 6istas +cont-

  • 7/21/2019 EDA_Aulas

    62/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 62

    pub%ic 'oid c%ear( * ++torna a %ista 'azia6igua% a ma`eRmptD

    inicio5m5nu%%6 numR%em586 / pub%ic 'oid set(int i,Object 2 thro@s Inde2OutOf3oundsR2ception * ++substituir por 2 o e%em no indice i da %ista ++ou nao faz nada se e%e nao esti'er na %ista ++dispara uma e2cepcao se o indice introduzido ++esti'er fora do inter'a%o 8numR%em if(iZ8i5numR%em thro@ ne@ Inde2OutOf3oundsR2ception(6 1odo p5get1odo(i6

    pe%em526 /

    2mplementa#o $e 6istas +cont-

  • 7/21/2019 EDA_Aulas

    63/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 63

    pub%ic 'oid add(int i,Object 2 thro@sInde2OutOf3oundsR2ception

    *

    if(iZ8inumR%em thro@ ne@ Inde2OutOf3oundsR2ception(6 1odo p5ne@ 1odo(2,nu%%6 if(i558 pne2t5inicio6 inicio5p6 e%se * 1odo anterior5get1odo(i6

    pne2t5anteriorne2t6 anteriorne2t5p6 / if(pne2t55nu%% m5p6 numR%emXX6 / pub%ic 'oid addTim(Object 2 *

    1odo p5ne@ 1odo(2,nu%%6 if(isRmptD( inicio5p6 e%se mne2t5p6 m5p6 numR%emXX6 /

    2mplementa#o $e 6istas +cont-

  • 7/21/2019 EDA_Aulas

    64/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 64

    pub%ic Object remo'e(int i * if(iZ8i5numR%em thro@ ne@

    Inde2OutOf3oundsR2ception(6 Object antigo6 ++e%em a remo'er e de'o%'er if(i558 ++se for para remo'er o primeiro * antigo5inicioe%em6 if(inicio55m m5nu%%6 inicio5inicione2t6

    / e%se * 1odo anterior5get1odo(i6 1odo coitado5anteriorne2t6

    antigo5coitadoe%em6anteriorne2t5coitadone2t6

    if(coitado55m m5anterior6 / numR%em6 return antigo6 /

    $efni#o $e 7o$o inner classi % d

  • 7/21/2019 EDA_Aulas

    65/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 65

    pri'ate c%ass 1odo * pri'ate Object e%em6 ++Rndereco )ue aponta para o objecto uti%

    pri'ate 1odo ne2t6 ++ponteiro para o no seguinte pri'ate 1odo(Object 2 * ++constructor de um no e%em526 ne2t5nu%%6 / pri'ate 1odo(Object 2,1odo seguinte * ++construtor de um no e%em526 ne2t5seguinte6

    / / ++m da c%asse 1odo /++m da c%asse MistaMigada

    !

  • 7/21/2019 EDA_Aulas

    66/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS

    Arores +5rees-

    R!&

    Conceitos, propriedades

    eitor

  • 7/21/2019 EDA_Aulas

    67/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 67

    Rela!5o h'e#6#(u'"a %s l'ea#

    A#4o#e T um "ojuto &e o&os )o&es+(ue "otem elemetos tal (ue os o&es temuma #ela!5o 8pa'9:lho; e sat's-a*em asp#op#'e&a&es se/u'tes< Se T 5o 4a*'a, et5o tem um o&o espe"'al "hama&o #a'*

    )#oot+ &a a#4o#e, (ue 5o tem pa'0 Ca&a o&o 4 &e T &'-e#ete &a #a'* tem um ='"o o&o pa'2> to&o o&o "om pa' 2 um :lho &e 20

    i! +aude i! esportos i$lite&a i! A&ademi&a

    as& emenino ursos ro(essores studantes

    Conceitos +cont-

    0ib%i (i d i d %h

  • 7/21/2019 EDA_Aulas

    68/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 68

    0ib%ings (irmos dois nodos )ue sao %hosdo mesmo pai6

    1odo e2terno 1odo sem %hos (fo%ha6 1odo interno nodo com ou mais %hos 1odo ancestra% (ancestor

    Um nodo u # um ancestra% do nodo ' se u5' ou u #ancestra% de pai de ' Nue # descendenteC

    O /#au &o o&ode uma Lr'orecorresponde ao nBmero de seus %hos (m

    &r'ore ordenada L uma ordem %inear denida para %hos de cada nodo

    Conceitos +Cont-

  • 7/21/2019 EDA_Aulas

    69/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 69

    Classifca#o

    &

  • 7/21/2019 EDA_Aulas

    70/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 70

    &r'ores

    &r'ore 3inLria &r'ore 3inLria de Pes)uisa (3usca Outras (eaps, &_M, 3=rees, etc

    Classifcao

    A ?' '

  • 7/21/2019 EDA_Aulas

    71/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 71

    A#4o#e ?'a#'a 4onjunto nito de nodos )ue # ou 'azio ou #

    di'idido em trs subconjuntos7 & raiz da ar'ore6 Uma ar'ore binLria chamada subar'ore es)uerda7 Uma ar'ores binLria chamada subar'ore direita

    Outra denio Uma arvore binria uma arvore vazia ouum nodo com subarvores esquerda edireita que so ambas arvores binrias.

    Classifca#o

    & 3i L i d P i

  • 7/21/2019 EDA_Aulas

    72/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 72

    &r'ore 3inLria de Pes)uisa uma ar'ore ordenada com as propriedades

    seguintes7 4ada nodo tem no ma2imo . %hos6 4ada nodo %ho # designado ou %ho es)uerdo ou %ho dir 1a ordenacao dos %hos dum nodo, o %ho es)uerdo precede

    o %ho direito

    5raessia $e arore

    =ra'essia de ar'ore

  • 7/21/2019 EDA_Aulas

    73/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 73

    =ra'essia de ar'ore Preorder (Preordem Inorder (Inordem Postorder (PosOrdem

    PreOr$er em 8ec"rs#o

  • 7/21/2019 EDA_Aulas

    74/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 74

    ome dado ao pro&essamento (eito antes de &ada &/amadare&ursia

    #oid "uncaoRec%int i& '

    ((( arra)*i+ , -.

    '''

    "uncaoRec%i/0&.

    '''

    1

    re:rder

    Pre4Or$er: &'emplo;mprimir um Arra

  • 7/21/2019 EDA_Aulas

    75/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 75

    odese usar Preordempara imprimir uma estrutura

    se#=en&ial ,arra lista> et&!- na ordem dada! asta imprimiro primeiro elemento> se.uido da impresso re&ursia dos

    elementos posteriores

    9 13 2 10 3 7 5 8

    9rimeiro

    elemento857310213

    /amada

    re&ursia

    02 3 0- 2 4 5 67rordem

    Pr;4Or$em: 2mprimin$o "m Array

  • 7/21/2019 EDA_Aulas

    76/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 76

    9 13 2 10 37

    0 a 4

    13 2 10 3 7 021 a 4

    2 10 3 7 02 32 a 4

    10 3 7 02 3 0-3 a 4

    3 7 02 3 0- 2&aso $ase

    10 3 7 02 3 0- 23 a 4

    2 10 3 7 02 3 0- 22 a 4

    13 2 10 3 7 02 3 0- 21 a 4

    9 13 2 10 3 7 02 3 0- 20 a 4

    Pr;4Or$em: 2mprimin$o "m Array

  • 7/21/2019 EDA_Aulas

    77/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 77

    Implementao:#oid imprimir%int arra)*+8 int i8 int 9& '

    i" %i : 9&

    return.

    ar!ui#o(print%arra)*i+ / ;

  • 7/21/2019 EDA_Aulas

    78/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 78

    ome dado ao pro&essamento (eito ap's &ada &/amadare&ursia

    #oid "uncaoRec%int i& '

    ((( "uncaoRec%i/0&.

    '''

    arra)*i+ , -.

    '''

    1

    's@or

    P

  • 7/21/2019 EDA_Aulas

    79/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 79

    odese usar ps-Ordempara imprimir uma estruturase#=en&ial na ordem inersa! asta imprimir o primeiro

    elemento apsa impresso re&ursia dos elementos

    posteriores

    9 13 2 10 3 7 5 8

    9rimeiro

    elemento13 2 10 3 7 5 8

    /amada

    re&ursia

    6 5 4 2 0- 3 02 7 's@or

    P

  • 7/21/2019 EDA_Aulas

    80/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 80

    9 13 2 10 3 0 a 4

    13 2 10 3 1 a 4

    2 10 3 2 a 4

    10 3 3 a 4

    3 2&aso $ase

    10 3 2 0-3 a 4

    2 10 3 2 0- 32 a 4

    13 2 10 3 2 0- 3 021 a 4

    9 13 2 10 3 2 0- 3 02 70 a 4

    P

  • 7/21/2019 EDA_Aulas

    81/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 81

    Implementao:#oid imprimir%int arra)*+8 int i8 int 9& '

    i" %i : 9&

    return.

    imprimir%arra)8 i/08 9&.

    ar!ui#o(print%arra)*i+ / ;

  • 7/21/2019 EDA_Aulas

    82/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 82

    struturas dinBmi&as (ormada por ns#ue possuemrefernciaspara outros dois n's ,(il/os-! ada n' raiz de

    uma su$Croreclass r#ore '

    =or#ore rai>.

    1

    class =or#ore '

    int #alor.

    =or#ore es!.

    =or#ore dir.1

    A;D

    12

    5 9

    17 2 4 1

    8 7

    Pr;4Or$em: =rores em Pr;4or$em

  • 7/21/2019 EDA_Aulas

    83/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 83

    odese usar pr-Ordempara imprimir uma Crore em prordem> ou se%a> o alor do n' impresso antesde suas duas

    su$Crores

    12

    03

    5

    03 5

    17

    03 5 04

    8

    03 5 04 6

    203 5 04 6 3

    9

    03 5 04 6 3 74

    03 5 04 6 3 7 ?7

    03 5 04 6 3 7 ? 4

    1

    03 5 04 6 3 7 ? 4 0

    Pr;4Or$em: =rores em Pr;4or$em

  • 7/21/2019 EDA_Aulas

    84/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 84

    Implementao:#oid pre@rdem%=or#ore ar#& '

    i" %ar# ,, null&

    return.

    ar!ui#o(print%ar#(#alor / ;

  • 7/21/2019 EDA_Aulas

    85/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 85

    : mesmo &on&eito pode ser estendido para imprimirCrores em p'sordem ,em #ue o pai impresso apsos

    (il/os- ou inordem ,o pai impresso entreos (il/os-

    odese usar o &on&eito de ps-ordemtam$m para

    en&ontrar a altura de uma Crore! A altura de uma rvorea maior distBn&ia entre a raiz e uma (ol/a

    or padro> dizemos #ue uma folha uma Crore de altura

    zero

    P

  • 7/21/2019 EDA_Aulas

    86/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 86

    Exemplos:

    2

    12

    5 9

    17 2

    4

    1

    7

    1

    4

    3

    7

    AlturaE 4

    AlturaE 3

    AlturaE 0

    P

  • 7/21/2019 EDA_Aulas

    87/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 87

    A altura de uma (ol/a zero> ou se%a> uma re(erFn&ia nula

    seria uma Crore de altura1! A altura de um n' #ual#uer

    i.ual a 1 + a altura da maior sub-rvore.

    5

    AlturaE 3

    2

    AlturaE 0

    9

    AlturaE 1

    12

    AlturaE 4

    AlturaE 1 AlturaE 1

    Ps-OrdemE a altura do pai &al&ulada apsas dos (il/os

    P

  • 7/21/2019 EDA_Aulas

    88/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 88

    12

    5 9

    17 2 1

    4

    7

    1 1

    10

    1

    1

    2

    1 1

    0

    3

    4

    1

    1

    1 1

    0

    P

  • 7/21/2019 EDA_Aulas

    89/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 89

    Implementao:

    int altura%=or#ore ar#& '

    i" %ar# ,, null&

    return A0.

    int B0 , altura%ar#(es!&.

    int B3 , altura%ar#(dir&.

    return %0 / MatB(max%B08 B3&&.

    1's:rdem

    ?este do &aso $ase

    /amadas re&ursias

    5A! Arorepub%ic interface &r'ore3inaria!ePes)uisa

  • 7/21/2019 EDA_Aulas

    90/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 90

    * ++interface para abstraccao de uma 30=pub%ic int um7olhas(6

    ++retorna true se a 30= for 'azia de contrario fa%sepub%ic boo%ean 'sEmpt$( 6 ++insere um e%emento na 30=pub%ic boo%ean a&&(4omparab%e 26

    ++de'o%'e a a%tura da ar'orepub%ic int altu#a(6

    ++es'azia a 30=pub%ic 'oid "lea#(6

    ++'erica se um e%emento 2 esta ou nao na 30=++retorna true se 2 esta na 30= de contrario retorna fa%se

    pub%ic boo%ean "ota's(4omparab%e 26++imprime a ar'ore segundo o percurso inorder

    pub%ic 'oid 'o#&e#(6

    5A! +Cont-++imprime a ar'ore segundo o percurso postorder

  • 7/21/2019 EDA_Aulas

    91/91

    EDA ESTRUTURAS DE DADOS E ALGORITMOS 91

    ++imprime a ar'ore segundo o percurso postorder pub%ic 'oid posto#&e#(6

    ++imprime a ar'ore segundo o percurso preorderpub%ic 'oid p#eo#&e#(6++de'o%'e o numero de nos da ar'orepub%ic int umNo&os(6++metodo para remocao dum e%emento

    ++retorna true se encontrou 2 e remo'e o++de contrario retorna fa%sepub%ic boo%ean #emo4e(4omparab%e 26++retorna o e%emento procurado ou nu%% se nao esti'erpub%ic 4omparab%e sea#"h(4omparab%e 26++Qetorna o numero de e%ementos na 30=pub%ic int s'*e(6

    /