Академический Документы
Профессиональный Документы
Культура Документы
50
150
250
350
450
350
450
250
50
150
250
50
150
50
50
50
150
150
150
350
450
250
550
350
450
250
550
350
450
250
550
350
450
550
650
650
750
650
750
750
850
950
980
950
980
850
650
750
At o momento temos para o n raiz 75% de ocupao; n folha 1 50%; n folha 2 50%, n folha 3
50; e n folha 4 50%. Se continuarmos inserindo elementos em um determinado n (qualquer um),
isso far com que o n exceda sua capacidade mxima e faa o n raiz crescer para 4 elementos. Se
mantivermos a poltica de inserir elementos em um determinado n, ento a raiz receber um novo
elemento e ter que se dividir, aumentando a altura da rvore. Vale ressaltar que a rvore no precisou ficar
100% preenchida para ocorrer o aumento de altura. Portanto, a afirmao falsa.
22
22
22
18
22
18
18
25
25
72
22
18
22
25
18
15
72
25
15
72
12
22
22
15
12
15
25
18
12
72
25
18
72
87
22
15
12
72
18
25
87
22
22
15
15
72
12
18
12
87
25
72
18
25
87
94
94
15
15
72
12
18
25
12
94
72
18
25
15
94
72
12
98
87
25
94
18
99
94
30
87
98
87
30
25
18
72
25
72
12
99
22
15
15
98
87
22
18
94
98
87
12
98
22
22
98
99
99
}
R.: Rotao simples a direita.
4) (4.0) Em um dos slides apresentados em sala de aula h a seguinte afirmao: uma rvore pode ser
entendida como um grafo acclico conexo onde um dos vrtices raiz diferenciado dos demais. Ou seja,
se houver um ciclo, a representao deixa de ser rvore e passa a ser um grafo. Existem 2 formas de se ter
um ciclo:
a. (2.0) Um n tem como filho um de seus ancestrais;
b. (2.0) Um n tem mais que um pai;
Apresente a estrutura de dados e o cdigo em C/C++ para resolver as situaes mencionadas.
R.: Se incluirmos um novo elemento na estrutura de dados que pode ser o nmero de visitas ou um
booleano para indicar se o elemento j foi visitado, ento utilizando-se do algoritmo de visita in-order
podemos verificar se um elemento j foi visitado ou no.
struct tNode
{
int data;
bool visited;
struct tNode* left, *right;
};
struct sNode
{
struct tNode *t;
struct sNode *next;
};
20
40
25
35
20
40
pai
25
35
45
irmo esquerda
irmo esquerda
45
50
50
60
60
irmo direita
20
45
pai
25
40
50
60
irmo direita
Assumindo que a funo remove tenha encontrado o valor a ser removido no n L na posio
pos_to_be_removed e que a funo desloca_esquerda faz o deslocamento de todos os elementos do vetor uma
posio esquerda e que diminui a quantidade de elementos do vetor em 1 unidade:
If (folha) // ento a situao que estamos abordando na questo
{
if (pai->filhos[pos_pai+1]->nro_elementos > MINIMO)
{
valor = pai->valores[pos_pai];
pai->valores[pos_pai] = pai->filhos[pos_pai+1]->valores[0];