Informática, perguntado por Júnior, 4 meses atrás

Crie uma função recursiva que imprima todos os nós maiores que 9 da árvore binária abaixo:

10, 8, 12, 7, 9, 11, 16

Obs: usar linguagem C.

Anexos:

Soluções para a tarefa

Respondido por TheNinjaTaurus
15

A partir da análise da árvore apresentada e dos conhecimentos adquiridos em LP, podemos definir a seguinte função recursiva:

\begin{array}{l}\tt void~print\_Tree(bTree\!*~t)~\{\\\quad \tt if~(t~!\!\!=~NULL~\&\&~t\!\!\rightarrow\!\!val > 9)~\{\\\qquad \tt print\_Tree(t\!\!\rightarrow\!\!lef);\\\qquad \tt printf("\%d\backslash\!n",~t\!\!\rightarrow\!\!val);\\\qquad \tt print\_Tree(t\!\!\rightarrow\!\!rig);\\\quad \tt \}\\\tt\}\end{array}

Arvore binária

É a estrutura de dados simples existente, composta por um denominado raiz que pode possuir duas sub-árvores:

  • Sub-árvore esquerda (SAE): Valores menores que a raiz
  • Sub-árvore direita (SAD): Valores maiores que a raiz

Função recursiva

É o tipo de função de executa a sí mesma, ou seja, durante a sua execução ela pode "chamar" a ela mesma uma ou mais vezes.

No caso da função apresentada, ela executa \tt print\_Tree(t\!\!\rightarrow\!\!lef); e \tt print\_Tree(t\!\!\rightarrow\!\!rig); dentro dela mesma.

Apresentação de uso

\#\tt{i}\tt{nclude}~ < \!\!stdio.h\!\! > \\\#\tt{i}\tt{nclude}~ < \!\!stdlib.h\!\! >

⇒ Definição da estrutura da árvore

\begin{array}{l}\tt{typed}\tt{ef~struct~\_bTree~\{}\\\quad \tt int~val;\\\quad \tt struct~\_bTree\!*~lef,*~rig;\\\tt \}~bTree;\end{array}

⇒ Função imprime árvore

\begin{array}{l}\tt void~print\_Tree(bTree\!*~t)~\{\\\quad \tt if~(t~!\!\!=~NULL~\&\&~t\!\!\rightarrow\!\!val > 9)~\{\\\qquad \tt print\_Tree(t\!\!\rightarrow\!\!lef);\\\qquad \tt printf("\%d\backslash\!n",~t\!\!\rightarrow\!\!val);\\\qquad \tt print\_Tree(t\!\!\rightarrow\!\!rig);\\\quad \tt \}\\\tt\}\end{array}

⇒ Função insere nó

\begin{array}{l}\tt bTree*~ins\_TreeNode(bTree\!\!*~t,~int~v)\{\\\quad\tt //Primeiro~no\\\quad\tt if~(t==NULL)~\{\\\qquad\tt bTree\!\!* aux = malloc(sizeof(bTree));\\\qquad\tt aux\!\!\rightarrow\!\!val = v;\\\qquad\tt aux\!\!\rightarrow\!\!lef = aux\!\!\rightarrow\!\!rig = NULL;\\\qquad\tt \tt{r}eturn~aux;\\\quad\}\\\quad\tt else \{\\\qquad\tt //Demais~nos\\\qquad\tt if (v < t\!\!\rightarrow\!\!val)\\\qquad\quad\tt t\!\!\rightarrow\!\!lef = ins\_TreeNode(t\!\!\rightarrow\!\!lef, v);\\\qquad\tt else\\\qquad\quad\tt t\!\!\rightarrow\!\!rig = ins\_TreeNode(t\!\!\rightarrow\!\!rig, v);\\\qquad\tt return~t;\\\quad\tt\}\\\}\end{array}

⇒ Main

\begin{array}{l}\tt int~main() \{\\\quad\tt bTree\!*~arv = NULL;\\\quad\tt int~nodes[] = \{ 10, 8, 12, 7, 9, 11, 16 \};\\\\\quad\tt for (int~n = 0; n < sizeof~nodes/sizeof~nodes[0]; n++) \{\\\qquad\tt printf("Insere \%d\backslash n", nodes[n]);\\\qquad\tt arv = ins\_TreeNode(arv, nodes[n]);\\\quad\tt \}\\\\\quad\tt printf("\backslash n\backslash nNos~maiores~que~9:\backslash n");\\\\\quad\Large \text{$\tt print\_Tree(arv);$}\\\\\quad\tt getch();\\\}\end{array}

A chamada da função solicitada está destacada em fonte maior no código acima.

OBS: O código-fonte desta resposta está no PDF em anexo

⇔ Veja mais sobre

https://brainly.com.br/tarefa/39977477

https://brainly.com.br/tarefa/26091021

Dúvidas? Estarei à disposição para eventuais esclarecimentos.

\begin{array}{l}\textsf{\textbf{Bons\:estudos!}}\\\\\text{$\sf Sua\:avaliac_{\!\!,}\tilde{a}o\:me\:ajuda\:a\:melhorar$}~\orange{\bigstar\bigstar\bigstar\bigstar\bigstar}\\\textsf{Marque\:como\:a\:melhor\:resposta\:\textbf{se\:for\:qualificada}}\\\\\textsf{\textbf{\green{Brainly}}\:-\:\blue{\sf Para\:estudantes.\:Por\:estudantes}}\end{array}

Anexos:

Júnior: Resposta incrível, muito obrigado! :D
TheNinjaTaurus: Por nada!!
Fico contente por conseguir ajudar =D
Perguntas interessantes