Arvore AVL

462 palavras 2 páginas
#include "arvoreAVL.h"

int altura(No* pRaiz) { if (pRaiz == NULL) return 0; int hesquerda = altura(pRaiz->esquerda); int hdireita = altura(pRaiz->direita); if(hesquerda > hdireita) { return hesquerda + 1; } else { return hdireita + 1; }
}

No* criarArvore(int elemento, No* esquerda, No* direita) { No* n = (No*) malloc (sizeof(No)); n->elemento = elemento; n->balancear = altura(direita) - altura(esquerda); n->esquerda = esquerda; n->direita = direita; return n;
}

int escreve(No* r) { if (r!= NULL) { escreve(r->esquerda); printf("%d(%d)", r->elemento, r->balancear); escreve(r->direita); }
}

int EsqEsq(No** r) { No* b = *r; No* a = b->esquerda; b->esquerda = a->direita; a->direita = b; a->balancear = 0; b->balancear = 0; *r = a;
}

int DirDir(No** r) { No* a = *r; No* b = a->direita; a->direita = b->esquerda; b->esquerda = a; a->balancear = 0; b->balancear = 0; *r = b;
}

int EsqDir(No** r) { No *c = *r; No *a = c->esquerda; No *b = a->direita; c->esquerda = b->direita; a->direita = b->esquerda; b->esquerda = a; b->direita = c; switch(b->balancear) { case -1: a->balancear = 0; c->balancear = 1; break; case 0: a->balancear = 0; c->balancear = 0; break; case +1: a->balancear = -1; c->balancear = 0; break; } b->balancear = 0; *r = b;
}

int DirEsq(No** r) { No *a = *r; No *c = a->direita; No *b = c->esquerda; c->esquerda = b->direita; a->direita = b->esquerda; b->esquerda = a; b->direita = c; switch(b->balancear) { case -1: a->balancear = 0; c->balancear = 1; break; case 0: a->balancear = 0; c->balancear = 0; break; case +1: a->balancear = -1; c->balancear = 0; break; } b->balancear = 0; *r = b;
}

int aux_inserir(No** pRaiz, int elemento,

Relacionados

  • Arvore avl
    5073 palavras | 21 páginas
  • Arvore avl
    668 palavras | 3 páginas
  • Arvore avl
    840 palavras | 4 páginas
  • Árvore AVL
    5925 palavras | 24 páginas
  • arvore avl
    805 palavras | 4 páginas
  • Arvore AVL
    405 palavras | 2 páginas
  • Arvore avl c++
    1024 palavras | 5 páginas
  • Código de Árvore AVL
    1448 palavras | 6 páginas
  • Avl - arvore binaria
    755 palavras | 4 páginas
  • Arvore avl
    7567 palavras | 31 páginas