TADS:Estrutura de Dados: codigos1002

De Wiki Cursos IFPR Foz
Revisão de 22h07min de 10 de fevereiro de 2016 por Estevan.costa (discussão | contribs) (Criou página com 'Este código possui as funcionalidades de Inserir e percorrer a Árvore In-Ordem. <syntaxhighlight lang="c"> #include<stdio.h> #include<stdlib.h> typedef struct No{ int...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegaçãoIr para pesquisar

Este código possui as funcionalidades de Inserir e percorrer a Árvore In-Ordem.

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

typedef struct No{
    int dado;
    struct No *esquerdo;
    struct No *direito;
} No;

void inordem(No *elemento);
void inserirelemento(No* novo, No* elemento);

void main()
{
    No raiz;
    raiz.dado = 20;
    raiz.esquerdo = NULL;
    raiz.direito  = NULL;



    No *novo = malloc(sizeof(No));
    novo->dado = 10;
    novo->esquerdo = NULL;
    novo->direito  = NULL;


    No *novoesquerdo = malloc(sizeof(No));
    novoesquerdo->dado = 5;
    novoesquerdo->esquerdo = NULL;
    novoesquerdo->direito = NULL;
    novo->esquerdo = novoesquerdo;


    No *novodireito = malloc(sizeof(No));
    novodireito->dado = 15;
    novodireito->esquerdo = NULL;
    novodireito->direito = NULL;
    novo->direito = novodireito;

    raiz.esquerdo = novo;


    novo = malloc(sizeof(No));
    novo->dado = 30;
    novo->esquerdo = NULL;
    novo->direito  = NULL;

    novoesquerdo = malloc(sizeof(No));
    novoesquerdo->dado = 25;
    novoesquerdo->esquerdo = NULL;
    novoesquerdo->direito = NULL;
    novo->esquerdo = novoesquerdo;


    novodireito = malloc(sizeof(No));
    novodireito->dado = 35;
    novodireito->esquerdo = NULL;
    novodireito->direito = NULL;
    novo->direito = novodireito;


    raiz.direito = novo;


    novo = malloc( sizeof(No));
    int d;
    scanf("%d", &d);
    novo->dado = d;
    novo->esquerdo = NULL;
    novo->direito = NULL;


    inserirelemento(novo, &raiz);

    inordem(&raiz);

}

void inordem(No *elemento)
{
    if(elemento != NULL)
    {
        inordem(elemento->esquerdo);
        printf("valor: %d\n", elemento->dado);
        inordem(elemento->direito);
    }
}

void inserirelemento(No *novo, No* elemento)
{
    if(novo->dado > elemento->dado)
    {
        if(elemento->direito != NULL)
            inserirelemento(novo, elemento->direito);
        else
            elemento->direito = novo;
    }
    else
    {
        if(elemento->esquerdo != NULL)
            inserirelemento(novo, elemento->esquerdo);
        else
            elemento->esquerdo = novo;
    }

}