texto - Decom - Ufop
texto - Decom - Ufop
texto - Decom - Ufop
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Universidade Federal de Ouro Preto – UFOP<br />
Instituto de Ciências Exatas e Biológicas – ICEB<br />
Departamento de Computação – DECOM<br />
Disciplina: Algoritmos e Estruturas de Dados I – CIC102<br />
Professor: David Menotti (menottid@gmail.com)<br />
3. (0,6 pontos) Considere uma árvore estritamente binária e quase completa, composta por<br />
um ponteiro para o nó raiz, onde cada nó é composto por um valor inteiro e ponteiros para<br />
os nós direito e esquerdo, como os TADs apresentados abaixo:<br />
typedef struct Tarvore<br />
{<br />
TNo *pRaiz;<br />
} TArvore;<br />
typedef struct TNo<br />
{<br />
int valor;<br />
TNo *pEsq;<br />
TNo *pDir;<br />
} TNo;<br />
Construa uma função em C/C++ que receba dois valores inteiros e um ponteiro para árvore<br />
estritamente binária e quase completa, e então insira os dois novos nós (representados pelos<br />
valores inteiros recebidos) na árvore de forma que ela continue sendo uma árvore<br />
estritamente binária e quase completa. Obs: caso a árvore esteja vazia somente um dos<br />
valores deverá ser inserido na árvore, de forma que ela continue sendo estritamente binária e<br />
quase completa. Caso seja necessário usar outras estruturas de dados como pilhas, filas e<br />
listas, considere que elas já estão implementadas.<br />
4. (0,6 pontos) Considere uma matriz composta por valores 1 e 0 representando uma imagem<br />
binária (ponto branco valor 0, ponto preto valor 1) como ilustrado na figura abaixo.<br />
unsigned char img[10][10] = {<br />
{0,0,1,1,0,0,0,0,0,0},<br />
{0,1,0,0,0,1,0,0,0,0},<br />
{0,1,0,1,1,0,0,0,1,0},<br />
{0,1,0,0,1,0,1,0,0,0},<br />
{0,1,1,0,1,0,1,1,0,0},<br />
{0,0,0,0,1,0,0,1,0,0},<br />
{0,0,1,0,1,0,1,1,1,0},<br />
{0,0,1,1,1,0,0,1,0,1},<br />
{0,0,0,0,0,0,1,1,0,0},<br />
{0,0,0,0,0,0,1,0,0,0} };<br />
A matriz/imagem apresentada acima/esquerda contém quatro regiões (uma com 7 pontos,<br />
duas com 11 pontos e uma última com um único ponto). Construa uma função em C/C++,<br />
que determine (e retorne) o número de regiões existentes em uma matriz/imagem. Uma<br />
sugestão para a definição (protótipo) da função é:<br />
Considere os TADs definidos abaixo,<br />
typedef struct TPonto<br />
{<br />
int x,y;<br />
struct TPonto* pstProx;<br />
} TPonto;<br />
int Regiao(TMatriz* pImagem);<br />
typedef struct TMatriz<br />
{<br />
int m,n;<br />
unsigned char** Matriz;<br />
} TMatriz;<br />
Também considere que funções de pilhas e filas já estão implementados para o TAD<br />
TPonto. Ainda considere que existem funções para criar, liberar e «zerar» o TAD TMatriz.