Organize a hierarquia dos setores de uma empresa através de uma árvore. Inicie o nodo raiz com o presidente e cria mais 5 níveis (diretor, gerente, vendedor, caixa e empacotador). Cada nível deve possuir no mínimo 2 nodos.
alguém poderia me dar uma ajudinha só não sei como faço para aparecer cada nodo dessa arvore, segue abaixo o código que estou tentado fazer.
//Operacoes sobre Arvore de busca binaria
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
//Criacao de um nodo da arvore
Raiz * cria_elemento(char cargos){
Raiz * novo = malloc(sizeof(Raiz));
novo->cargos = cargos;
novo->esquerda = NULL;
novo->direita = NULL;
return novo;
}
//Inclusao de um nodo na Arvore
void insere_folha(Raiz ** arv,char cargos){
if (*arv == NULL){
*arv = cria_elemento(cargos);
}else{
//se a informa??o ? menor que a informacao da arvore, insere a esquerda
if(cargos < (*arv)->cargos){
printf("Inserindo na Esquerda. \n");
insere_folha(&(*arv)->esquerda, cargos);
//se a informa??o ? maior que a informacao da arvore, insere a direita
}else if (cargos > (*arv)->cargos){
printf("Inserindo na Direita. \n");
insere_folha(&(*arv)->direita, cargos);
}
}
}
Pergunta
cristiano m
Organize a hierarquia dos setores de uma empresa através de uma árvore. Inicie o nodo raiz com o presidente e cria mais 5 níveis (diretor, gerente, vendedor, caixa e empacotador). Cada nível deve possuir no mínimo 2 nodos.
alguém poderia me dar uma ajudinha só não sei como faço para aparecer cada nodo dessa arvore, segue abaixo o código que estou tentado fazer.
//Operacoes sobre Arvore de busca binaria
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
//Definicao da Arvore
typedef struct Raiz{
char cargos;
struct nodo * esquerda;
struct nodo * direita;
}Raiz;
//Criacao de um nodo da arvore
Raiz * cria_elemento(char cargos){
Raiz * novo = malloc(sizeof(Raiz));
novo->cargos = cargos;
novo->esquerda = NULL;
novo->direita = NULL;
return novo;
}
//Inclusao de um nodo na Arvore
void insere_folha(Raiz ** arv,char cargos){
if (*arv == NULL){
*arv = cria_elemento(cargos);
}else{
//se a informa??o ? menor que a informacao da arvore, insere a esquerda
if(cargos < (*arv)->cargos){
printf("Inserindo na Esquerda. \n");
insere_folha(&(*arv)->esquerda, cargos);
//se a informa??o ? maior que a informacao da arvore, insere a direita
}else if (cargos > (*arv)->cargos){
printf("Inserindo na Direita. \n");
insere_folha(&(*arv)->direita, cargos);
}
}
}
//Caminhamento pre-ordem
void pre_ordem(Raiz * arv){
if (arv != NULL) {
printf("%c \n",arv->cargos);
if (arv->esquerda != NULL){
printf("Nodo Esquerdo. \n");
pre_ordem(arv->esquerda);
}
if(arv->direita != NULL){
printf("Nodo Direito. \n");
pre_ordem(arv->direita);
}
}
}
//Caminhamento em-ordem
void em_ordem(Raiz * arv){
if (arv != NULL){
if (arv->esquerda != NULL){
printf("Nodo Esquerdo. \n");
em_ordem(arv->esquerda);
}
printf("%c \n", arv->cargos);
if (arv->direita != NULL){
printf("Nodo Direito. \n");
em_ordem(arv->direita);
}
}
}
//Caminhamento pos-ordem
void pos_ordem(Raiz * arv){
if (arv != NULL){
if (arv->esquerda != NULL){
printf("Nodo Esquerdo. \n");
pos_ordem(arv->esquerda);
}
if (arv->direita != NULL){
printf("Nodo direito. \n");
pos_ordem(arv->direita);
}
printf("%c \n", arv->cargos);
}
}
//Pesquisar um nodo
void pesquisar_nodo(Raiz * arv, int pesq)
{
if (arv != NULL)
{
if (arv->cargos == pesq)
{
printf("Nodo encontrado %c. \n", arv->cargos);
}else
{
if (pesq > arv->cargos)
{
printf("Pesquisando a direita. \n");
pesquisar_nodo(arv->direita, pesq);
}else
{
printf("Pesquisando a esquerda. \n");
pesquisar_nodo(arv->esquerda, pesq);
}
}
}else
{
printf("Nodo não encontrado\n");
}
}
//Monta o menu do programa
void monta_menu(){
printf("//////////////////////////////////////////////////////////////// \n");
printf("Operacoes sobre Arvores \n");
printf("Selecione a Opcao Desejada: \n");
printf(" 1 - Incluir Folha\n");
printf(" 2 - Caminhar Em Pre-Ordem \n");
printf(" 3 - Caminhar Em Ordem \n");
printf(" 4 - Caminhar Em Pos-Ordem \n");
printf(" 5 - Pesquisar nodos na Arvore \n");
printf(" 0 - Sair \n");
printf("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \n \n");
printf("Qual a sua opcao: ");
}
int main()
{
int i = 6;
char cargos;
Raiz * arv = NULL;
printf("\n====LEGENDA===== \n(P)-Presidente \n(D)-Diretor \n(G)-Gerente \n(V)-Vendedor \n(C)-Caixa \n(E)-Empacotador\n");
insere_folha(&arv, 'p');
insere_folha(&arv, 'd');
insere_folha(&arv, 'g');
insere_folha(&arv, 'v');
insere_folha(&arv, 'c');
insere_folha(&arv, 'e');
em_ordem(arv);
return 0;
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.