Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include<string.h>
- struct no
- {
- char chave[20];
- struct no *pai;
- struct no *esquerda;
- struct no *direita;
- };
- typedef struct no No;
- No *raiz;
- No *criar_no(char c[])
- {
- No* novo = (No*) malloc(sizeof(No) );
- strcpy(novo->chave, c);
- novo->pai = NULL;
- novo->esquerda = NULL;
- novo->direita = NULL;
- return novo;
- }
- void inserir(char dado[])
- {
- No *novo = criar_no(dado);
- No *y = NULL;
- No *x = raiz;
- if(raiz == NULL)
- {
- printf("%s inserido na raiz\n", novo->chave);
- raiz = novo;
- }
- else
- {
- while(x != NULL)
- {
- y = x;
- if(strcmp(novo->chave,x->chave)<0)
- x = x->esquerda;
- else if(strcmp(novo->chave,x->chave)>0)
- x = x->direita;
- }
- if(strcmp(novo->chave, y->chave)<0)
- {
- printf("%s inserido a esquerda de %s\n", novo->chave, y->chave);
- y->esquerda = novo;
- novo->pai = y;
- }
- else if(strcmp(novo->chave, y->chave)>0)
- {
- printf("%s inserido a direita de %s\n", novo->chave, y->chave);
- y->direita= novo;
- novo->pai = y;
- }
- }
- }
- void em_order(No*raiz)
- {
- if(raiz!=NULL)
- {
- em_order(raiz->esquerda);
- printf("%s",raiz->chave);
- em_order(raiz->direita);
- }
- }
- No*busca(No*raiz,char k[])
- {
- if(raiz==NULL ||strcmp(raiz->chave,k)==0)
- {
- return raiz;
- }
- if(strcmp(k,raiz->chave)<0)
- {
- return busca(raiz->esquerda,k);
- }
- else
- {
- return busca(raiz->direita,k);
- }
- }
- void min(No*raiz)
- {
- while(raiz->esquerda!=NULL)
- {
- raiz=raiz->esquerda;
- return raiz;
- }
- }
- void max(No*raiz)
- {
- while(raiz->direita!=NULL)
- {
- raiz=raiz->direita;
- return raiz;
- }
- }
- int main()
- {
- raiz = NULL;
- char dado[20];
- strcpy(dado,"c");
- inserir(dado);
- strcpy(dado,"a");
- inserir(dado);
- strcpy(dado,"b");
- inserir(dado);
- strcpy(dado,"coisa");
- //strcpy(dado,"c");
- //inserir(raiz, dado);insere mais dados
- No*no=(busca(raiz,dado));
- {
- if(no==NULL)
- {
- printf("\nNao achou");
- }
- else
- {
- printf("\n Achou");
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement