Matéria que está sendo dada no 4º termo, no algoritmo estamos incluindo um nó em uma árvore binária:
Procedure INCNO(var RAIZ:PREG, ITEM:Integer);
var NO, AUX: PREG; FLAG: boolean;
Begin
new(NO);
NO^.INFO:=ITEM;
NO^.ESQ:=nil;
NO^.DIR:=nil;
if RAIZ = nil then
RAIZ:=NO
else
begin
FLAG:=false;
AUX:=RAIZ;
while (FLAG = false) do
begin
if (ITEM = AUX^.INFO) then
begin
if (AUX^.ESQ = nil) then
begin
AUX^.ESQ:=NO;
FLAG:=true;
end
else
AUX:=AUX^.ESQ;
end
else
begin
if (AUX^.DIR = nil) then
begin
AUX^.DIR:=NO;
FLAG:=true;
end
else
AUX:=AUX^.DIR;
end;
end;
end;
end;
Qual critério foi adotado para inserir valores na árvore?
R: Se o nó filho for menor que o nó pai, e o lado esquerdo estiver vazio,
o valor é inserido do lado esquerdo, caso o lado esquerdo estiver ocupado,
é verificado com o valor que está lá, se o nó é menor ou maior, caso seja maior,
e o lado direito estiver vazio, o valor é inserido do lado direito,
caso não esteja vazio, é verificado com o valor que está lá, se o nó é maior ou menor...
Esquerda: Valor inferior ao do nó Pai;
Direita: Valor superior ao do nó Pai;
Nenhum comentário:
Postar um comentário