GithubHelp home page GithubHelp logo

kelly-prone / arvore_binaria Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 62 KB

Nesta atividade, foi construído uma árvore binária utilizando o método pré-ordem, ou seja, partindo da raiz e imprimindo na tela os nós visitados.

arvore_binaria's Introduction

Árvore Binária

Nesta atividade, foi construído uma árvore binária utilizando o método pré-ordem, ou seja, partindo da raiz e imprimindo na tela os nós visitados.

Descrição da Atividade:

Considere que, no seu primeiro estágio, ao realizar um teste no seu programa que implementa árvores binárias, você inseriu os números de seu RA (da esquerda para a direita) como se cada algarismo fosse um nó na árvore. Dessa forma, altere o código-fonte dado para que seu programa, durante a execução, monte uma árvore binária a partir dos dígitos de seu RA.

O seu programa não deve realizar a inserção automaticamente ordenada, ou seja, não é preciso desenvolver um método que realize a inserção ordenadamente. Você mesmo pode construir a árvore (via inserções simples, porém seguindo as regras de inserção ordenada), de maneira a compor a árvore ordenada com os números de seu RA. Além disso, você precisará criar uma função que seja capaz de realizar o percurso pré-ordem na árvore recém-criada, partindo da raiz e imprimindo na tela os nós visitados de acordo com esse método.

arvore-binaria

Projeto Implementado em C:

RA Utilizado: 210342105

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>

/*
            ATIVIDADE MAPA - ESTRUTURA DE DADOS 2
            Aluna: Kelly Prone de Oliveira
            RA: 21034210-5
            Limeira - SP

*/

typedef struct no{
    int valor;
    struct no *direita, *esquerda;
}NoArv;

NoArv* imprimir_arvore(NoArv *raiz, int num){
    setlocale(LC_ALL, "Portuguese");
    if(raiz == NULL){
        NoArv *aux = malloc(sizeof(NoArv));
        aux->valor = num;
        aux->esquerda = NULL;
        aux->direita = NULL;
        return aux;
    }
    else{
        if(num < raiz->valor)
            raiz->esquerda = imprimir_arvore(raiz->esquerda, num);
        else
            raiz->direita = imprimir_arvore(raiz->direita, num);
        return raiz;
    }
}

void preordem(NoArv *raiz){
    if(raiz){
        printf("%d ", raiz->valor);
        preordem(raiz->esquerda);
        preordem(raiz->direita);
    }
}

int main(){
	setlocale(LC_ALL, "Portuguese");
    NoArv *raiz = NULL;
    int opcao, valor;

    do{
    	printf("MAPA - ESTRUTURA DE DADOS 2\n");
    	printf("Kelly Prone de Oliveira\n\n");
    	printf("Menu Principal:\n");
        printf("\n\t0 - Sair\n\t1 - Inserir\n\t2 - Imprimir\n");
        scanf("%d", &opcao);
        system("cls");

        switch(opcao){
        case 1:
            printf("\nDigite um valor: ");
            printf("\n--> ");
            scanf("%d", &valor);
            raiz = imprimir_arvore(raiz, valor);
            system("cls");
            break;
        case 2:
            printf("\nImprimindo Árvore:\n");
            preordem(raiz);
            printf("\n\n");
            printf("****PROGRAMA FINALIZADO!****\n\n");  
            break;
        default:
            if(opcao != 0)
                printf("\nOpção inválida!!!\n");
                printf("\nDigite Novamente...\n");
        }
    }while(opcao != 0);
    
    return 0;
}

Sobre a Árvore Binária:

Cada nó possui pelo menos três valores: uma referência para o pai do nó, uma referência para o filho à esquerda do nó e mais uma outra referência para o filho à direita do respectivo nó. O atributo "pai" vai apontar para a posição na qual o pai do nó se encontra, no vetor. O atributo "esquerda" vai armazenar a posição da raiz da sub-árvore à esquerda do nó, e o atributo "direita" guarda a posição da raiz da sub-árvore direita do nó, no vetor.

É possível adicionar algumas regras à inserção de dados em uma árvore para que ela se torne ordenada. Assim, sempre que um novo dado estiver para ser adicionado junto à árvore, ele será comparado com o nó raiz. Se ele é menor do que a raiz, deverá ser adicionado na sub-árvore esquerda, caso contrário na sub-árvore direita.

Obrigada por chegar até aqui! =)

arvore_binaria's People

Contributors

kelly-prone avatar

Stargazers

Henrique Souza avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.