Submit | All submissions | Best solutions | Back to list |
EDUPT20 - Nós Folhas de ABB |
Crie um programa em C que manipula uma ABB (Árvore Binária de Busca) de acordo com a entrada de comandos e valores, executando esses comandos.
Entrada
A entrada pode ser um COMANDO sozinho, ou então um COMANDO seguido de um VALOR.
Os comandos são: 1 -> inserir na ABB, 2 -> mostrar o número de nós FOLHA da ABB e terminar o programa. O comando inserir tem logo a seguir qual o valor a ser inserido.
Saída
A saída vai ser o número de nós folha da ABB (que também termina o programa).
Entrada | Saída |
1 40 1 20 1 60 1 10 1 30 1 50 1 70 2 |
4 |
1 40 1 20 1 60 1 10 1 30 1 50 1 70 1 5 1 15 1 55 2 |
5 |
#include <stdio.h>
#include <stdlib.h>
struct no
{
int chave;
struct no *esq;
struct no *dir;
};
typedef struct no No;
No* cria_no(int chave)
{
No *novo = malloc(sizeof(No));
novo->chave = chave;
novo->esq = novo->dir = NULL;
return novo;
}
No* insere_no(No *raiz, int chave)
{
No *novo = cria_no(chave);
No *p, *q;
if (raiz == NULL)
{
raiz = novo;
}
else
{
p = NULL;
q = raiz;
while (q != NULL)
{
p = q;
if (chave < q->chave)
q = q->esq;
else
q = q->dir;
}
if(chave < p->chave)
{
p->esq = novo;
}
else
{
p->dir = novo;
}
}
return raiz;
}
void em_ordem(No* raiz)
{
if(raiz != NULL)
{
em_ordem(raiz->esq);
printf("%d ", raiz->chave);
em_ordem(raiz->dir);
}
}
Added by: | IFTM_Maratona |
Date: | 2022-12-21 |
Time limit: | 1s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | C |