Prévia do material em texto
<p>BST search tree) OBS: Um no pode ter Os or E<R<D 2 or conhecem or pair elementos elementos a a menores que o no que I 2? 4? 7? 6? 5 8? 3? 5? 5 5 5 5 5 7 7 3 3 3 3 3 6 4 4 2 2 2 4 2 OBS: 4? 5? 6? 7? 2 2 8? 2? 3? 2 Caso 2 2 2 3 D 3 do Oln) 3 3 3 4 4 4 4 5 5 5 6 6 7 7? 16? 15 8? 3? 15 15 12? 15? 15 15 15 15 16 16 12 16 12 12 12 12 12 9 9 9 9 9 D 7 7 7 7 8 3 8 Percurso 2° 5 ORDEM PrE-ORDEM 7 8 3 6 2 4 2 3° 2° 10 2° 1°</p><p>OPERAÇÕES BST Altura Percurso em Largura Altura he=27 5 5 3 he=-1 7 h=2 he=1 3 3 P-1 h=1 6 2 4 -1 -1 -1 -1 -1 -1 hd=1 -1 -1 1 he=-1 -1 -1 Percurso EM LARGURA 5372461 5372461 E? Q Q S? Q Q A? Q Q D E U E E E S S S S S A A A D T T T T F Q L? Q L? E E E S S S A A A T T T F F F C C I C I L L</p><p>Retirada 7 3? 7 7? SUCESSOR g 5 3 6 1 6 1 D CASOS RETIRADA 1 no uma tem filhos) lasta remover 2 tem 1 filho (a esquerda no filho pai</p><p>Lista 10 47 10 10 5? 6 12 6 12 6 12 4 8 11 4 8 11 5 8 11 D 5 7 5 7 7 D 6 rai apontar 6 Rara para 5 I ignorar de apontar 04 para 5. 10 10 7? 10 8? 10 10? 6 12 12 12 12 8 8 8 11 11 11 7 11 7 NULL D 7 folha, folha, 10 raiz 10 rai apontar ou seja, 8 para ou 8 so para para 8 I ignorar sucessor (11) 06 que rer 11 raiz 12? 12 começa a 11 luscamos 12 para sucessor (12) filho a esquerda 12 que do sucessor rer "11" NULL)</p><p>SBB ( Symmetric Binary B-tree) 000 Arrore dois tipos de verticais l Mesmo numero de no Arrore BST E<R<D elementos elementos a menores a que que 3? 2? 4? I 5 5 5 7? I 5 6? 5 5 8? D 3 3 3 7 7 3 3 6 2 2 4 2 4 2 4 PRE POS-ORDEM EM-ORDEM ray RED EDR ERD</p><p>E<R<D BST elementos elementos a menores que que Mo 3? 2? 5? 4? 5 5 7? 5 6? 1 5 5 5 8? D 3 3 7 3 7 3 3 D 6 2 2 4 2 4 2 4 PRE-ORDEM POS-ORDEM EM-ORDEM ray raiz, drata RED EDR ERD 36 4 typedef struct TipoNo * TipoApontador; 37 5 void No){ typedef struct TipoNo{ 38 if((No == NULL)){ 7 int Reg; 39 return; 8 TipoApontador Esq; 40 9 TipoApontador Dir; 41 10 }TipoNo; 42 11 43 12 void InicializaArvore(TipoApontador *No){ 13 *No=NULL; 44 14 } 45 15 46 void No){ 16 void InserirNo (TipoApontador *No, int valor){ 47 if((No == NULL)){ 17 if(*No==NULL){ 48 return; 18 49 19 20 50 (*No)->Esq= NULL; 21 (*No)->Dir= NULL; 51 printf("%d ",No->Reg); 22 return; 52 23 53 } 24 f(valor < (*No)->Reg){ 54 25 InserirNo(&(*No)->Esq, valor); 55 void 26 return; 56 27 if((No == NULL)){ 28 > (*No)->Reg){ 57 return; 29 InserirNo(&(*No)->Dir, valor); 58 30 59 PosOrdem((No)->Esq); 31 60 32 else{ 61 printf ("%d ",No->Reg); 33 62 } 34</p><p>7? 8? 12? DD 7 3 7. 3 7 8 3 7 8 12 15? 8 8 47 ED 4 8 3 12 3 7 12 7 12 7 4 3 4 8 17 12 3 7 4 8 10 1 5 6 7 12 15 10? 3 EE 4 8 0 12 15 1 3 7 4 8 9? 8 1 6 4 3 7. EE 10 12 15 1 3 8 1 3 6 4 8 5 7 10 12 15 1 3 7 EE 4 8 10 1 12 15 3</p><p>Z R A 7,10,5,2,4,9,3,6 T E E U I M P A H A 77 6? 4? EE 132 9 13 6 9 13 4 6 9 6 g 4 g 13 6 15? 6 15? DD 6 6 13 4 13 15 4 13 15 4 13 4 9 15 15 12 6 13 6 13 EE 6 13 4 g 15 3 4 g 15 1 3 4 9 15 H 6 13 6 13 3 6 13 1 3 4 9 15 3 15 1 H 9 15 1 H 7? DE 3 6 13 3 6 13 3 6 13 8 1 H 8 9 15 1 H 9 15 1 8 H 15 EE 7 9</p><p>3 6 13 8 1 H 15 7 9 8 3 6 13 1 H 7 y struct * struct int Diri TipoApontador No void BST Reg) > ((No) Dir, return; } if Reg) V (No) BST Esq, } if Dir == NULL && (No) return, } if (* No) Dir = No = No Dir, 2 return;</p><p>if (*No) Dir==NULL No == NULL, return, if (* No antecessor No) Dir NULL (*No) Esq = Dir, No); return; } } 7,10,5,2,4,9,3,6 I 7? 10? 5? 2? EE 7 7 10 5 7 10 2 5 7 10 5 4? 9? 97 DE 5 5 5 9 3 2 7 2 7 2 7 2 4 7 70 4 L ED V 6 1 3 5 ? 9 3 5 9 2 4 7 70 2 4 6 7 70</p><p>13? 62 13 13 9 49 49 B 4 B 15? 4 6 6 6 4 4 9 73 6 13 6 6 13 73 15 4 15 H 9 15 6 13 8? 6 13 3 3 6 13 EE(H) H 9 15 1 15 1 3 6 13 7? 3 6 13 1 9 15 EE(9) 7 8 g 15 1 4 DE(6) 3 6 13 8 8 9 7 9 15 6 1 4 1 13 3 is 4 7</p><p>1 E=010001 4 A 6 5 D=010010 S 5 S=010111 A E 6 D 6 D A E A E enum { } TipoNo TipoApontador No int Altura- BST Mo == return -1; int = BST(No int hE = (No if > } }</p><p>Tabela HASH tabelas de ou indice ? 1 de transformação para indice (HASH FUNCTION) M= tamanho tabela mod M Hashing universal ou <% M coloca-se mais M deve ser um numero primo um para K M numero TESTANDO = 420 7 128 127 primo mais SEATNTOD = 430 prox. 2 método para ledar com precisa ser utilizado Hashing por endrecessamento aberto linear Hashing duplo Hashing por fechado Uso de Listas encadeadas</p><p>enderegamento fechado ex: sendo M=7 PESQUISA posicao alfaleto = 16%7=2 h(E) = 5%7=5 P = 19%7=5 E 6 cargas aberto Hashing linear mod M, para J= da de repetição (J DEVE ex: sendo M=7 LUNES Hashing duplo Kmod M</p><p>exercicios 1 5,28,19,15,20,33,12,7,10 M=7 0 5%7=5 28%7=0 19%7=5 20%7=6 /11 33%7=5 12%7=5 5 19 33 12 /// 7%7=0 6 20 /11 10%7=3 M=11 0 33 12 5%11=5 28%11=6 20%11=9 5 Com M=11, house 33%11=0 28 12%11=1 7 7%11=7 10%11=10 20 11 10 /11 M=13 0 M 2 C= 3%13=3 A A. = 1%13=1 O C=3 V=22 C A=1 R=18 N 1=9 M=13%13=0 E 0=75 Z M=13 N=14%13=1 S E=5 Z=26%13=0 R N=14 i Z=26 S=19 V=22%13=9 L=12 13 L</p><p>3 M=13 0 M C= 3%13=3 A= 1%13=1 O C N M=13%13=0 E N=14%13=1 L Z=26%13=0 S i 13 N h1=1 Z h1=0 S h1=6 14%13=1 14.3%13=8 12+4.1%13=3</p><p>EXTERNA Intercalação de caminhos Quicksort EXTERNO Nao fitar de memoria interna usa a de para</p><p>EXERCÍCIOS de SALA ESTRATEGIA ESD ADD NOQ 2- ARD 3- EGI AT 4. AEEGIRSTT 5- 6. 1- 2 passada 2 ESTRATEGIA R EST A BLOCO1: ERSTT T AST BLOCO2: F TAT ,BLOCO 3: AD G EAT i EAG do bloco 1 A EGI V VAD S fim do bloco 2 A 0 Asi ISA N Q U S T A</p><p>Arfore B 157 12/17 57 692? 8/19/37 12/17 23/32 43/57 5/8/19/37 1/2 67 23 32 43/57 5/8/19/37 1/2 67 23/32 43/57 15 58 1/2 12/13 D 17/18 23/32 43/57</p><p>8 151 12/19 32 8 157 8/19 a 157 12/17 23/32 reterada 12,8,19,5 8/19 12? 157 23/32 8? 8 157 17/19/23/32 7 15 17/19/23/32 7 5? 17 15 17/23/32</p><p>10 15 30? 10 15 30 V 15 5 10 30 40 20 I 15 30 5 10 20 30 40 15 30 5 10 12 20 40 V 15 30 10 / 5 12 20 40 12 30 15 40 10 30 / / 5 12 20 40 15,20 12 202 12 30 30 / / / 5 10 20 40 5 10 20 40</p><p>45 I 37 45 50 60 50 40 I 50 / 37 40 45 60 99 I 70 / 40 45 48 53 37 50 40 45 48 49 59 $ 60 65 4 37/50/59/70 53 58 59 60 65 37/50/59/70 /</p><p>47? 37/50/59/70 / 53/58 50/59/70 / 47 53/58 37/50/59/70 40/45/47/48 59 70 47 48 50 59 70 52 53 50 53/59/70 39 40 45 46 48 49</p>