Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct _arv {
- int info;
- struct _arv *sae;
- struct _arv *sad;
- } arv;
- void insere(arv **raiz, arv *no) {
- *raiz = no;
- if (!(*raiz)) {
- return;
- }
- else {
- if (no->info < (*raiz)->info)
- insere(&(*raiz)->sae, no);
- else
- insere(&(*raiz)->sad, no);
- }
- }
- void preOrdem(arv *raiz) {
- printf("%d ", raiz->info);
- if (raiz->sae)
- preOrdem(raiz->sae);
- if (raiz->sad)
- preOrdem(raiz->sad);
- }
- void emOrdem(arv *raiz) {
- if (raiz->sae)
- emOrdem(raiz->sae);
- printf("%d ", raiz->info);
- if (raiz->sad)
- emOrdem(raiz->sad);
- }
- void posOrdem(arv *raiz) {
- if (raiz->sae)
- posOrdem(raiz->sae);
- if (raiz->sad)
- posOrdem(raiz->sad);
- printf("%d ", raiz->info);
- }
- int profundidade(arv *raiz) {
- int pe, pd;
- pe = pd = 1;
- if (!raiz)
- return 0;
- if (raiz -> sae)
- pe += profundidade(raiz->sae);
- if (raiz -> sad)
- pd += profundidade(raiz->sad);
- if (pe > pd)
- return pe;
- return pd;
- }
- int num_nos(arv *raiz) {
- int nos = 1;
- if (!raiz)
- return 0;
- if (raiz->sae)
- nos += num_nos(raiz->sae);
- if (raiz->sad)
- nos += num_nos(raiz->sad);
- return nos;
- }
- int busca(arv *raiz, int contador, int chave) {
- if( raiz == NULL || raiz->info == chave )
- return contador;
- if(raiz->info > chave)
- return busca (raiz->sae, contador+1, chave);
- else
- return busca (raiz->sad, contador+1, chave);
- return 0;
- }
- int main() {
- int info, i;
- arv *raiz, *no;
- int N, chave;
- int contador;
- raiz = NULL;
- scanf("%d %d", &N, &chave);
- for (i = 0; i < N; ++i) {
- scanf("%d", &info);
- no = (arv*) malloc(sizeof(arv));
- no->sae = no->sad = NULL;
- no->info = info;
- insere(&raiz, no);
- }
- printf("\nEm-Ordem: ");
- emOrdem(raiz);
- printf("\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement