Francês4,93 KB
RBALOCAR #i alocar(PtRaiz) \ PtRaiz^.Esq<><-nulo \>-nulo \><-valor \>-valor \><-ptraiz
#f="" ##="">-ptraiz>RB_INSESQ #i\ SF \ pai<-localizar
\="" se (pai≠nulo)e(pai^.esq="nulo)ET" #i="" \sv\="" alocar(novo) \ ">-localizar><><-nulo \>-nulo \><-valorfilho
\quem">-valorfilho><-novo
#f#f="">-novo>RB_REMFOLHA #i\ SE (Arv^.Info=Valor) ET @NODOÉRAIZ@ \SE (Arv^.Dir=nulo)e(Arv.Esq=nulo) ET\ #i liberar(Arv) \Arv<-nulo \sv#f |sn|sf\="" sn="">-nulo \sv#f><-localizarpai(arv, valor) \se(pai≠nulo) et\#i\ se (pai^.esq≠nulo)e(pai^.esq^.info="Valor)" et\ \ #i \@filhoaesq@">-localizarpai(arv,><-pai^.esq \se(nodo^.esq="nulo)e(Nodo^.Dir=nulo)" et \ \ #i \@éfolha@ \ sv \liberar(nodo)[:-pai^.esq><-nulo
#f="" #sn="" sf#f\sn\#i">-nulo><-pai^.dir\ se(nodo^.esq="nulo)e(Nodo^.Dir=nulo)">-pai^.dir\><-nulo#f\sn sf\#f\#f\sn="" sf\#f#f="">-nulo#f\sn>###CAMINHA_BINARIA####NIVEL#ABCDEFG --PROF#ABDECFG --PreFE#ABDECFG --CE#DBEAFCG --PosFE#DEBFGCA --PreFD#ACGFBED --CD#GCFAEBD --PosFD#GFCEDBA ####PERC_ARV# PreFE# #i \Pilha<-arv
\eq(pilha≠[ ])fa">-arv><-pilha\se(ptaux≠nulo) et\#i\ visitar(ptaux) \-pilha\se(ptaux≠nulo)><-
ptaux^.dir \ \><-ptaux^.esq #f#f#f="">-ptaux^.esq>###PosFE #i\ Pilha<-arv
\ eq pilha≠[ ]fa \#i\">-arv><-pilha\ se (ptaux≠nulo) et\se marcado(ptaux) et\visitar(ptaux) \sn\">-pilha\><-marcar(ptaux)>-marcar(ptaux)><-ptaux^.dir>-ptaux^.dir><-ptaux^.esq #f#f="">-ptaux^.esq>##CONST_ARV_PreFE #i\InfoProx<-obteminfo\ se(infoprox="“*”)-obteminfo\><-nulo
\sn">-nulo><-infoprox>-infoprox>
ConstruirArv (Arv^.Dir) #f#f ##LISTAD_ARV #i alocar(PtListaAux) \PtListaAux^.Info<-arv^.info \se lista="nulo">-arv^.info><-nulo
\sn">-nulo><-lista>-lista><=ptlistaaux \fazerlistadearv (arv^.esq, lista) \fazerlistadearv(arv^.dir,lista)>=ptlistaaux>###INS_NOD_ABP #i SE BuscarABP(Raiz, Novo^.Chave)≠nulo \ET InserirABP<-falso
%chave já existe% \sn #i\">-falso><-verdad
\se raiz="nulo" \et">-verdad><-novo
%inserir_n_raiz% \sn #i %busca posição e insere%">-novo><-raiz\>-raiz\><-falso
\eq não inseriu faça \se novo^.chave">PAux^.Chave \ET SE PAux^.Dir =nulo \ET #i PAux^.Dir<-novo>-novo><-verdad
\#f\sn">-verdad><-paux^.dir \\ sn se paux^.esq="nulo" \et #i">-paux^.dir \\><-novo>-novo>-falso>Inseriu<-verdadeiro
#f">-verdadeiro><-
paux^.esq #f#f#f="">->###REM_NOD_ABP #i SE Raiz ≠nulo \ET SE Raiz^.Chave ≠ ChaveRem \ET SE Raiz^.Chave > ChaveRem \ET RemoverABP(Arv, Raiz, Raiz^.Esq, ChaveRem) \SN RemoverABP(Arv, Raiz, Raiz^.Dir, ChaveRem) \sn #i %VAI REM NODO RAIZ% \SE (Raiz^.Esq= nulo)e(Raiz^.Dir= nulo) \ET SE Raiz=Arv %REMOVER FOLHA% \ET Arv<-nulo
\sn se pai^.dir="Raiz" \et">-nulo><-nulo
\sn se pai^.dir="Raiz " \et">-nulo><-nulo>-nulo><-nulo
\sn se (raiz^.esq="nulo)ou(Raiz^.Dir" = "nulo)" \et %n tem som 1 subarv% \se raiz^.esq="nulo" \et %subirsubarvdir% \se raiz≠ arv \et se pai^.esq="Raiz" \et">-nulo><-raiz^.dir>-raiz^.dir><-raiz^.dir \sn">-raiz^.dir><-raiz^.dir \\ sn %subir subarvoreesq% \se raiz≠ arv \et se pai^.esq="Raiz" \et">-raiz^.dir><-raiz^.esq \sn">-raiz^.esq><-raiz^.esq \sn">-raiz^.esq><-raiz^.esq \sn %n tem2 subarv% \#i">-raiz^.esq>Nodo<-raiz^.esq>-raiz^.esq><-raiz
\eq nodo^.dir ≠ nulo">-raiz><-nodo>-nodo><-nodo^.dir %n_vai_subst_raiz% \se (nodo^.esq="nulo)" \et">-nodo^.dir %n_vai_subst_raiz%><><-é 1 folha% \sn">-é 1><-nodo^.esq \se raiz ≠ arv \et se pai^.esq="Raiz" \et">-nodo^.esq><-nodo>-nodo>-nodo
\sn arv←nodo">-nodo><-raiz^.esq>-raiz^.esq><-raiz^.dir #f \liberar(raiz) \">-raiz^.dir><-nulo
#f">-nulo>