Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include "tree.h"
- tree* cria_no(int dado){
- tree* x = malloc(sizeof(tree));
- x->data = dado;
- x->left = NULL;
- x->right = NULL;
- return(x);
- }
- tree* inseri_na_arvore(tree* raiz, int dado){
- if(raiz == NULL){
- return cria_no(dado);
- }
- else {
- if(raiz->data > dado){
- raiz->left= inseri_na_arvore(raiz->left,dado);
- }
- else {
- raiz->right = inseri_na_arvore(raiz->right,dado);
- }
- }
- return(raiz);
- }
- void pre_order(tree* raiz){
- if(raiz != NULL){
- printf("%d\n", raiz->data);
- pre_order(raiz->left);
- pre_order(raiz->right);
- }
- }
- void order(tree* raiz){
- if(raiz != NULL){
- order(raiz->left);
- printf("%d\n", raiz->data);
- order(raiz->right);
- }
- }
- void pos_order(tree* raiz){
- if(raiz != NULL){
- pos_order(raiz->left);
- pos_order(raiz->right);
- printf("%d\n", raiz->data);
- }
- }
- void em_largura(tree* raiz){
- fila* lista = aloca_fila();
- enfilera(raiz, lista);
- printf("Inicio: %p\nFinal: %p\n", lista->inicio, lista->final);
- printf("Executou linha antes do laço\n");
- while(!check_fila(lista)){
- printf("Eu entrei\n");
- tree* valor = desenfilera(lista);
- printf("%d\n",valor->data);
- if(valor->left != NULL){
- enfilera(valor->left,lista);
- }
- if(valor->right != NULL){
- enfilera(valor->right,lista);
- }
- }
- }
- elemento* aloca_elemento(tree* valor){
- elemento* no = (elemento *) malloc(sizeof(elemento));
- no->data = valor;
- no->anterior = NULL;
- no->proximo = NULL;
- return(no);
- }
- fila* aloca_fila(){
- fila* lista = (fila *) malloc(sizeof(fila));
- lista->inicio = NULL;
- lista->final = NULL;
- return(lista);
- }
- void enfilera(tree* data,fila* lista){
- if(lista->inicio == NULL && lista->final == NULL){
- elemento* no = aloca_elemento(data);
- lista->inicio = no;
- lista->final = no;
- }
- else {
- elemento* no = aloca_elemento(data);
- lista->final->proximo = no;
- no->anterior = lista->final;
- lista->final = no;
- }
- }
- tree* desenfilera(fila* lista){
- if(lista->inicio != lista->final){
- tree* ponteiro = lista->inicio->data;
- lista->inicio = lista->inicio->proximo;
- return(ponteiro);
- }
- else {
- elemento* aux = lista->inicio;
- tree* no = aux->data;
- free(aux);
- lista->inicio = NULL;
- lista->final = NULL;
- return(no);
- }
- }
- int check_fila(fila* lista){
- return(lista->inicio == NULL && lista->final == NULL);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement