SHARE
TWEET

Max e Minimos Arvore

a guest Dec 16th, 2018 104 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<string.h>
  4.  
  5. struct no
  6. {
  7.     char chave[20];
  8.     struct no *pai;
  9.     struct no *esquerda;
  10.     struct no *direita;
  11. };
  12.  
  13. typedef struct no No;
  14.  
  15. No *raiz;
  16.  
  17. No *criar_no(char c[])
  18. {
  19.     No* novo = (No*) malloc(sizeof(No) );
  20.     strcpy(novo->chave, c);
  21.     novo->pai = NULL;
  22.     novo->esquerda = NULL;
  23.     novo->direita = NULL;
  24.     return novo;
  25. }
  26.  
  27. void inserir(char dado[])
  28. {
  29.     No *novo = criar_no(dado);
  30.  
  31.     No *y = NULL;
  32.     No *x = raiz;
  33.  
  34.     if(raiz == NULL)
  35.     {
  36.         printf("%s inserido na raiz\n", novo->chave);
  37.         raiz = novo;
  38.     }
  39.     else
  40.     {
  41.         while(x != NULL)
  42.         {
  43.             y = x;
  44.             if(strcmp(novo->chave,x->chave)<0)
  45.                 x = x->esquerda;
  46.  
  47.             else if(strcmp(novo->chave,x->chave)>0)
  48.                 x = x->direita;
  49.         }
  50.         if(strcmp(novo->chave, y->chave)<0)
  51.         {
  52.             printf("%s inserido a esquerda de %s\n", novo->chave, y->chave);
  53.             y->esquerda = novo;
  54.             novo->pai = y;
  55.         }
  56.         else if(strcmp(novo->chave, y->chave)>0)
  57.         {
  58.             printf("%s inserido a direita de %s\n", novo->chave, y->chave);
  59.             y->direita= novo;
  60.             novo->pai = y;
  61.         }
  62.     }
  63.  
  64. }
  65.  
  66.  
  67. void em_order(No*raiz)
  68. {
  69.     if(raiz!=NULL)
  70.     {
  71.         em_order(raiz->esquerda);
  72.         printf("%s",raiz->chave);
  73.         em_order(raiz->direita);
  74.     }
  75. }
  76.  
  77. No*busca(No*raiz,char k[])
  78. {
  79.     if(raiz==NULL ||strcmp(raiz->chave,k)==0)
  80.     {
  81.         return raiz;
  82.     }
  83.     if(strcmp(k,raiz->chave)<0)
  84.     {
  85.         return busca(raiz->esquerda,k);
  86.     }
  87.     else
  88.     {
  89.         return busca(raiz->direita,k);
  90.     }
  91. }
  92.  
  93.  
  94. void min(No*raiz)
  95. {
  96.     while(raiz->esquerda!=NULL)
  97.     {
  98.         raiz=raiz->esquerda;
  99.         return raiz;
  100.     }
  101. }
  102. void max(No*raiz)
  103. {
  104.     while(raiz->direita!=NULL)
  105.     {
  106.         raiz=raiz->direita;
  107.         return raiz;
  108.     }
  109. }
  110.  
  111. int main()
  112. {
  113.     raiz = NULL;
  114.  
  115.     char dado[20];
  116.  
  117.     strcpy(dado,"c");
  118.     inserir(dado);
  119.     strcpy(dado,"a");
  120.     inserir(dado);
  121.     strcpy(dado,"b");
  122.     inserir(dado);
  123.     strcpy(dado,"coisa");
  124.     //strcpy(dado,"c");
  125.     //inserir(raiz, dado);insere mais dados
  126.  
  127.     No*no=(busca(raiz,dado));
  128.     {
  129.         if(no==NULL)
  130.         {
  131.             printf("\nNao achou");
  132.         }
  133.         else
  134.         {
  135.             printf("\n Achou");
  136.         }
  137.  
  138.     }
  139.  
  140.  
  141.  
  142.     return 0;
  143. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top