#include <stdlib.h> //Por causa do NULL #define OK 0 //Codigo de Erro #define MATRICULA_NAO_ENCONTRADA 0 #define ARVORE_VAZIA 1 #define MEMORIA_ESGOTADA 2 //Questo 3 //Considere um cadastro de funcionrios armazenado em uma rvore binria de busca, representada pelas estruturas de dados //definidas abaixo: typedef struct { int matricula; char nome[41]]; float salario; }Fun; typedef struct arv { Fun funcionario; void * pEsq; void * pDir; }Arv; //Letra A: //Construa uma funo O(log(N)) que receba a matricula de um funcionrio e retorne o seu salrio, ou retorne o valor 0 caso //a matricula recebina no esteja na rvore. //Protripo: float obterSalario(Arv * pArvore, int matricula); #define MATRICULA_NAO_ENCONTRADA 0 float obterSalario(Arv * pArvore, int matricula) { //Verificar se a rvore no est vazia if(!pArvore) return MATRICULA_NAO_ENCONTRADA; if(pArvore->funcionario.matricula == matricula) return pArvore->funcionario.salario; if(matricula < pArvore->funcionario.matricula) obterSalario(pArvore->pEsq, matricula); else obterSalario(pArvore->pDir, matricula); } //Letra B: //Construa uma funo que calcule o total da folha de pagamento(somatrio de todos os salrios de todos os funcionrios cadastrados) //Prottipo sugerido: void obterTotal(Arv *pArvore); float obterTotal(Arv *pArvore); float obterTotal(Arv *pArvore) { float total; //Verificar se a arvore no est vazia if(!pArvore) return ARVORE_VAZIA; total = obterTotal(pArvore->pEsq) + obterTotal(pArvore->pDir) + pArvore->funcionario.salario; return total; } int main() { return OK; }