TADS:Estrutura de Dados: codigos1002
De Wiki Cursos IFPR Foz
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;
}
}