Buscar

Exemplo Arvore

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PROGRAM PLISTAARV;
USES CRT;
TYPE
 PONTEIRO=^LISTADPENC;
 LISTADPENC=RECORD
 ESQ:PONTEIRO;
 DADO:INTEGER;
 DIR:PONTEIRO;
 END;
PROCEDURE IMPRIMEARVORE(RAIZ:PONTEIRO;COL,LIN:BYTE);
VAR DESLOQUE:BYTE;
BEGIN
 GOTOXY(COL,LIN);//POSICIONE O CURSOR NA LINHA E COLUNA
 DESLOQUE:=TRUNC(30/(LIN*1.2));
 //DESLOQUE A COLUNA COM BASE NESSE CALCULO (QUANTO MAIS
 //NUMEROS SE INSEREM MENOR O DESLOCAMENTO)
 IF RAIZ=NIL THEN
 WRITE('.')
 ELSE
 BEGIN
 WRITE(RAIZ^.DADO);
 IMPRIMEARVORE(RAIZ^.ESQ,COL-DESLOQUE,LIN+2);
 IMPRIMEARVORE(RAIZ^.DIR,COL+DESLOQUE,LIN+2);
 //NA MESMA LINHA E COM O MESMO DESLOCAMENTO
 //PARA A ESQUERDA OU DIREITA VOU ESCREVENDO
 //OS DADOS NA TELA
 END;
END;
PROCEDURE ALOCADADO(RAIZ, NOVOESPACO:PONTEIRO; NUMERO:INTEGER);
BEGIN
{
PENSAR QUE AQUI VOU PROCURAR ONDE VOU FAZER A LIGACAO COM O
PONTEIRO, ASSIM SE FOR MAIOR QUE A RAIZ VOU COLOCAR A LIGACAO
A DIREITA OU A ESQUERDA, ASSIM CHAMO A PROCEDURE ALOCADADO VERIFICA
SE A INFORMACAO A DIREITA OU A ESQUERDA EH MAIOR OU MENOR PARA A ALOCACAO
DA NOVA INFORMACAO
}
IF NUMERO > RAIZ^.DADO THEN
 BEGIN
 IF RAIZ^.DIR = NIL THEN
 BEGIN
 RAIZ^.DIR:=NOVOESPACO;
 END
 ELSE
 BEGIN
 ALOCADADO(RAIZ^.DIR,NOVOESPACO, NUMERO);
 END;
 //DIREITA
 END
ELSE
 BEGIN
 IF RAIZ^.ESQ = NIL THEN
 BEGIN
 IF RAIZ^.ESQ = NIL THEN
 BEGIN
 RAIZ^.ESQ:=NOVOESPACO;
 END
 END
 ELSE
 BEGIN
 ALOCADADO(RAIZ^.ESQ, NOVOESPACO, NUMERO);
 END;
 //ESQUERDA
 END;
END;
VAR
 RAIZ,AUX:PONTEIRO;
 VRINFO :INTEGER;
BEGIN
 CLRSCR;
 VRINFO:=0;
 RAIZ:=NIL;
 WHILE VRINFO <> 999 DO
 BEGIN
 WRITELN('INFORME O NUMERO: ');
 READLN(VRINFO);
 IF VRINFO <> 999 THEN
 BEGIN
 NEW(AUX);
 AUX^.DADO:=VRINFO;
 AUX^.ESQ:=NIL;
 AUX^.DIR:=NIL;
 IF RAIZ <> NIL THEN
 BEGIN
 ALOCADADO(RAIZ,AUX , VRINFO);
 END;
 IF RAIZ=NIL THEN
 BEGIN
 RAIZ:=AUX;
 END;
 END;
 END;
 CLRSCR;
 IMPRIMEARVORE(RAIZ,40,1);
READLN;
END.

Outros materiais