Arvore binária de busca

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #include <stdlib.h> typedef struct node{ int info; struct node *dir, *esq; } no; void criarArvore(no **raiz){ *raiz = NULL; } void inserir(no **pRaiz,int info){ if (*pRaiz==NULL){ *pRaiz = (no *) malloc(sizeof(no)); (*pRaiz)->esq = NULL; (*pRaiz)->dir = NULL; (*pRaiz)->info = info; }else{ if(info<(*pRaiz)->info){ inserir(&(*pRaiz)->esq,info); } if(info>(*pRaiz)->info){ inserir(&(*pRaiz)->dir,info); } } } void remover(no **pRaiz,int info){ if (*pRaiz==NULL){ printf("\nNao existe o valor a ser removido."); return; }else{ if(info<(*pRaiz)->info){ remover(&(*pRaiz)->esq,info); } if(info>(*pRaiz)->info){ remover(&(*pRaiz)->dir,info); } if (info==(*pRaiz)->info){ } } } void exibirPreOrdem(no **pRaiz){ if(*pRaiz!=NULL){ printf("\n%d",(*pRaiz)->info); exibirPreOrdem(&(*pRaiz)->esq); exibirPreOrdem(&(*pRaiz)->dir); } } void exibirEmOrdem(no **pRaiz){ if(*pRaiz!=NULL){ exibirPreOrdem(&(*pRaiz)->esq); printf("\n%d",(*pRaiz)->info); exibirPreOrdem(&(*pRaiz)->dir); } } void exibirPosOrdem(no **pRaiz){ if(*pRaiz!=NULL){ exibirPreOrdem(&(*pRaiz)->esq); exibirPreOrdem(&(*pRaiz)->dir); printf("\n%d",(*pRaiz)->info); } } int Menu(){ printf("\n\nMenu\n"); printf("\n1 - Inserir"); printf("\n2 - Remover"); printf("\n3 - Imprimir"); printf("\n4 - Sair"); printf("\nDigite sua opcao:"); int opcao=0; while (opcao<1&&opcao>4){ scanf("%d",&opcao); } return opcao; } int menuImprimir(){ printf("\n\nMenu de Impressao\n"); printf("\n1 - Pre Ordem"); printf("\n2 - Em Ordem"); printf("\n3 - Pos Ordem"); printf("\nDigite sua opcao:"); int opcao=0; while (opcao<1&&opcao>3){ scanf("%d",&opcao); } return opcao; } int main(void) { no *raiz; criarArvore(&raiz); int valor=0; while(1){ switch(Menu()){ case 1: printf("\nDigite o valor do no a ser inserido: "); scanf("%d",&valor); inserir(&raiz,valor); break; case 2: /*printf("\nDigite o valor do no a ser removido: "); scanf("%d",&valor); remover(&raiz,valor);*/ printf("\nOps! A remocao nao esta pronta ainda."); break; case 3: switch(menuImprimir()){ case 1: exibirPreOrdem(&raiz); break; case 2: exibirEmOrdem(&raiz); break; case 3: exibirPosOrdem(&raiz); break; } break; case 4: return 0; break; } } return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines