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

typedef struct Paciente{
    char nome[50];
    char cpf[50];
    char sexo[20];
    char sintomas[500];
    int telefone;
    int idade;
    int codi;
    int urg;
    struct Paciente *prox;
}paciente;

typedef struct Arvore{
    struct Paciente *No;
    struct Arvore *Esq;
    struct Arvore *Dir;
}arvore;

void adicionar(arvore **Arv, paciente *pac){
    arvore *temp = NULL;
    if (*Arv == NULL){
        temp = (arvore*)malloc(sizeof(arvore));
        temp->Esq = NULL;
        temp->Dir = NULL;
        temp->No = pac;
        *Arv = temp;
    }
    else {
        if (pac->urg < ((*Arv)->No->urg)){
            adicionar(&((*Arv)->Esq), pac);
        }
        else{
            adicionar(&((*Arv)->Dir), pac);
        }
    }
}

// Em Ordem (Do menor pro maior)
void Mostrar(arvore *Arv){
    if(Arv != NULL){
        Mostrar(Arv->Esq);
        printf("Nome: %s\nCPF: %s\nSexo: %s\nIdade: %d\nTelefone: %d\nSintomas: %s\nUrgencia: %d\nCódigo: %d\n", Arv->No->nome, Arv->No->cpf, Arv->No->sexo, Arv->No->idade, Arv->No->telefone, Arv->No->sintomas, Arv->No->urg, Arv->No->codi);
        Mostrar(Arv->Dir);
    }
}

int main(){
    arvore *Arv = NULL;
    paciente pc;
    strcpy(pc.nome, "Carlos");
    strcpy(pc.cpf, "127.452.381-83");
    strcpy(pc.sexo, "m");
    strcpy(pc.sintomas, "tosse");
    pc.idade = 28;
    pc.telefone = 12345678;
    pc.codi = 1;
    pc.urg = 1;

    paciente pc2;
    strcpy(pc2.nome, "Ana");
    strcpy(pc2.cpf, "128.452.381-83");
    strcpy(pc2.sexo, "f");
    strcpy(pc2.sintomas, "dor de cabeça");
    pc2.idade = 25;
    pc2.telefone = 912345678;
    pc2.codi = 2;
    pc2.urg = 2;

    adicionar(&Arv, &pc);
    adicionar(&Arv, &pc2);
    Mostrar(Arv);

    return 0;
}
