Você está na página 1de 2

UTFPR​ ​-​ ​Universidade​ ​Tecnológica​ ​Federal​ ​do​ ​Paraná

DACOM​ ​-​ ​Departamento​ ​de​ ​Computacão


LT33B​ ​::​ ​Estrutura​ ​de​ ​Dados

Exercícios​ ​10​ ​::​ ​Árvores​ ​Binárias​ ​(Binary​ ​Tree)

Instruções​ ​Gerais
● Utilize​ ​o​ ​projeto​ ​trabalhado​ ​na​ ​última​ ​aula​ ​como​ ​base.

1) Escreva uma função recursiva que imprime os nós de uma Árvore Binária (BT) executando uma
varredura Posfix (E-D-V). Depois, escreva uma outra função recursiva que imprime os nós da BT
executando​ ​uma​ ​varredura​ ​Infix​ ​(E-V-D).

Funções:​ ​void​ ​printPosfix(Node*​ ​n);


​ ​ ​ ​ ​void​ ​printInfix(Node*​ ​n);

2) Escreva uma função recursiva que imprime os nós pares em uma BT, isto é, node->id de ser par.
Utilize​ ​como​ ​base​ ​algum​ ​dos​ ​algoritmos​ ​de​ ​varredura​ ​recursivos:​ ​prefix,​ ​infix​ ​ou​ ​posfix.

Função:​ ​void​ ​printEven(Node*​ ​n);

3) Escreva uma função recursiva que procura e imprime (caso encontrar) um dado valor de ID. Utilize
como​ ​base​ ​algum​ ​dos​ ​algoritmos​ ​de​ ​varredura​ ​recursivos:​ ​prefix,​ ​infix​ ​ou​ ​posfix.

Função:​ ​void​ ​findRecursive(Node*​ ​n,​ ​int​ ​key);

4) Escreva uma função recursiva que coloca os valores dos IDs de todos os nós de uma BT em um
vector<int>. Utilize como base algum dos algoritmos de varredura recursivos estudados: prefix, infix ou
posfix.

Função:​ ​vector<int>​ ​treeToVector(Node*​ ​n);

5) Escreva uma versão iterativa da varredura Prefix (V-E-D) para imprimir os nós de uma Árvore Binária
(BT). A implementação é bastante similar à varredura por níveis, que usa uma fila (queue<Node*>).
Contudo, a função solicitada deve utilizar uma pilha de nós (stack<Node*>) e empilhar os nós na
ordem​ ​D,​ ​E.​ ​Compare​ ​o​ ​resultado​ ​impresso​ ​com​ ​o​ ​da​ ​função​ ​recursiva​ ​Prefix.

Função:​ ​void​ ​printPrefixStack(Tree*​ ​t);


6) Escreva uma função iterativa que define os valores dos nós de uma BT de forma crescente por nível.
O número inicial da sequência deve ser fornecido para a função. Dica: modifique a função de
varredura​ ​por​ ​níveis​ ​(printByLevel)​ ​implementada​ ​previamente.

Função:​ ​void​ ​setNodesAsc(Tree*​ ​t,​ ​int​ ​start);

Exemplo:​ ​setNodesAsc(t,​ ​1);​ ​//​ ​raiz​ ​recebe​ ​1​ ​e​ ​valor​ ​cresce​ ​por​ ​nível

Você também pode gostar