Questão 4/5 - Estrutura de Dados
Na AULA 4 estudamos a inserção em uma árvore binária. Abaixo temos um código em linguagem C com uma função de inserção na árvore binária, considerando ela como uma Binary Search Tree (BST).
1. void Inserir(ElementoDaArvoreBinaria ** ElementoVarredura, int num) {
2.
3. if (*ElementoVarredura == NULL)
4. {
5. ElementoDaArvoreBinaria *NovoElemento = NULL;
6. NovoElemento = (ElementoDaArvoreBinaria *)malloc(sizeof(ElementoDaArvoreBinaria));
7. NovoElemento->esquerda = NULL;
8. NovoElemento->direita = NULL;
9.
10. NovoElemento->dado = num;
11. *ElementoVarredura = NovoElemento;
12. return;
13. }
14.
15. if (num < (*ElementoVarredura)->dado)
16. {
17. Inserir(&(*ElementoVarredura)->esquerda, num);
18. }
19. else
20. {
21. if (num >(*ElementoVarredura)->dado)
22. {
23. Inserir(&(*ElementoVarredura)->direita, num);
24. }
25. }
26. }
Acerca de árvores binárias e do código acima, assinale a alternativa CORRETA.
A |
Nas linhas 15 a 25 a função testa para qual ramo da árvore irá seguir, direito ou esquerdo, chamando novamente a função de inserção de forma recursiva. |
|
B |
Na linha 3 temos um teste condicional simples que tem como objetivo verificar se a árvore binária está completamente vazia, ou não. |
|
C |
Todo o código colocado entre as linhas 15 e 25 poderiam estar dentro de um SENÃO que faz parte da condicional da linha 4. |
|
D |
Na linha 2 temos a declaração da função, onde o primeiro parâmetro é uma variável que foi declarada com dois asteriscos (**). Deveria ser somente um, pois dois asteriscos não são permitidos na linguagem C. |
|
E |
O uso do um asterisco antes do nome da variável, como na linha 3 por exemplo, significa que queremos manipular o endereço daquela variável. |
1. void Inserir(ElementoDaArvoreBinaria * ElementoVarredura, int num) {
2.
3. if (*ElementoVarredura == NULL) //Se elemento vazio
>
4. {
5. ElementoDaArvoreBinaria *NovoElemento = NULL; //Cria novo
6. NovoElemento = (ElementoDaArvoreBinaria *)malloc(sizeof(ElementoDaArvoreBinaria)); //Aloca memoria
7. NovoElemento->esquerda = NULL; //Esquerdo vazio
8. NovoElemento->direita = NULL; //Direito vazio
9.
10. NovoElemento->dado = num; //Dado a ser inserido
11. *ElementoVarredura = NovoElemento; //Insere o elemento
12. return; //Finaaliza a função
13. }
14.
15. if (num < (*ElementoVarredura)->dado) //Se menor que o atual
16. {
17. Inserir(&(*ElementoVarredura)->esquerda, num); //Insere a esquerda
18. }
19. else
20. {
21. if (num >(*ElementoVarredura)->dado) //Se maior que o atual
22. {
23. Inserir(&(*ElementoVarredura)->direita, num); //Insere a direita
24. }
25. }
26. }
A alternativa A é a correta, como citado nos comentários.
Para escrever sua resposta aqui, entre ou crie uma conta
Estrutura de Dados I
•ESTÁCIO
Compartilhar