Logo Passei Direto
Buscar
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Algoritmos e Estrutura de Dados III
Lista de exercício 1
1.(a)
(b)	A altura do nó de chave 7 é 3. A chave 7 encontra-se no 2º nível considerando a raiz como nível 0. A altura da árvore é igual a 5.
(c)	Existe, e seu comprimento é igual a 3. Não.
(d)	É o nó de chave 27. Os filhos são a chave 5 e 10. 34 e 39 são nós irmãos.
(e)	Pré-Ordem: 22,12,7,5,4,3,6,10,14,27,24,23,25,32,37,34,39.
	In-Ordem: 3,4,5,6,7,10,12,14,22,23,24,25,27,32,34,37,39.
	Pós-Ordem: 3,4,6,5,10,7,14,12,23,25,24,34,39,37,32,27,22.
(f) 
2.
(a)
(b)	( -,4,/,-,*,8,5,2,+,3,*,7,8 ) -> Foi obtida a partir do desenho da árvore, realizada para a expressão infixada. A expressão prefixada consiste em pegar a raiz, imprimir, chave a esquerda, imprimir, chave a direita, imprimir, e assim sucessivamente.
(c)	( 4,8,5,*,2,-,3,7,8,*,+,/,- ) -> 	Foi obtida do mesmo modo que no exercício b, a partir do desenho da árvore, porém, na expressão posfixada, deve-se começar a impressão dos elementos, a partir da esquerda, depois direita, e assim raiz.
3.
int alturaArvore(No* p)
{ 
 if (p == NULL) return -1;
 int alturaEsq = alturaArvore(p->Esq); 
 int alturaDir = alturaArvore(p->Dir); 
 if (alturaEsq > alturaDir)
 return alturaEsq + 1; 
 else return alturaDir + 1; 
} 
4. 
int NRecInsere(Registro x, Apontador *p)
{
 Apontador pAux;
 Apontador pAnt=NULL;
 pAux=*p; 
 while(pAux!=NULL)
 {
 pAnt= pAux;
 if((pAux)->Reg.Chave > x.Chave)
 {
 (pAux)=(pAux)->Esq;
 }else
 if((pAux)->Reg.Chave < x.Chave)
 {
 (pAux)=(pAux)->Dir;
 }else
 {
 printf("Erro : Registro ja existe na arvore\n");
 return -1; 
 }
 }
 
 if(pAux==NULL)
 {
 Apontador pNo = (Apontador)malloc(sizeof(No));
 pNo->Reg = x;
 pNo->Esq = NULL;
 pNo->Dir = NULL;
 if(pAnt==NULL)
 *p=pNo;
 else if(x.Chave < pAnt->Reg.Chave)
			pAnt->Esq = pNo;
		else
			pAnt->Dir = pNo;
 return 0;
 } 
}
5.
 void ListarTabulado(No *p,int nivel)
{
 int i;
 nivel++;
 if (p != NULL)
 {
 for(i=1;i<nivel;i++)
 {
 printf(" ");
 }
 
 printf("%d\n",p->Reg.Chave);
 ListarTabulado(p->Esq,nivel);
 ListarTabulado(p->Dir,nivel);
 }else printf("---\n");
}