Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- N C1 X1 C2 X2 ... CN XN
- Deve ser executado "Inserir Xi" -> Ci == 2:
- Deve ser executado "Remover Xi" -> Ci == 3:
- Deve ser executado "Maiores Xi" -> Ci == 4:
- Deve ser executado "Kth Xi" Xi é o argumento (operando) da operação i.
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct arvore{
- int conteudo;
- struct arvore* dir;
- struct arvore* esq;
- } arv;
- arv* criarvore(){
- return NULL;
- }
- int vazia(arv* t){
- return t == NULL;
- }
- void imprimearvore(arv* t){
- if(!vazia(t)){
- printf("%d ", t->conteudo);
- imprimearvore(t->esq);
- imprimearvore(t->dir);
- }}
- int pertence(arv* t, int conteudo){
- if(vazia(t))
- return 0;
- return t->conteudo==conteudo || pertence(t->esq, conteudo) || pertence(t->dir, conteudo);
- }
- void inserenaarvore(arv** t, int conteudo){
- if (pertence(t, conteudo))
- if (*t == NULL){
- *t = (arv*)malloc(sizeof(arv));
- (*t)->esq = NULL;
- (*t)->dir = NULL;
- (*t)->conteudo = conteudo;
- } else{
- if(conteudo < (*t)->conteudo)
- inserenaarvore(&(*t)->esq, conteudo);
- if(conteudo > (*t)->conteudo)
- inserenaarvore(&(*t)->dir, conteudo);
- }
- }
- int main(){
- int num, T, i, j, N, Ci;
- scanf("%d", &T);
- if (T<1 || T>100)
- return 0;
- else{
- arv* t = criarvore();
- for( i=0; i<T; i++){
- scanf("%d", &N);
- if (N<1 || N>200000)
- return 0;
- else{
- for( j=0; j<N; j++){
- scanf("%d", &Ci)
- switch(Ci){
- case 1:
- inserenaarvore(&t, num);
- break;
- case 2:
- remove;
- break;
- case 3:
- maiores;
- break;
- case 4:
- kesimo termo;
- default:
- return 0;
- }}}}}
- free(t);
- return 0;
- }
Add Comment
Please, Sign In to add comment