#include "abin.h" #include #include void inorder(ABin a){ if(a != NULL){ inorder (a->esq); printf ("%d ", a->valor); inorder (a->dir); } } void preorder(ABin a){ if(a != NULL){ printf ("%d ", a->valor); preorder (a->esq); preorder (a->dir); } } void posorder(ABin a){ if(a != NULL){ posorder (a->esq); posorder (a->dir); printf ("%d ", a->valor); } } ABin insABin(ABin a, int x){ ABin novo; if(a == NULL){ novo = malloc(sizeof(NodoABin)); novo->valor = x; novo->esq = NULL; novo->dir = NULL; return novo; } else{ if(a->valor < x) a->dir = insABin(a->dir, x); else a->esq = insABin(a->esq, x); return a; } } int max(int a, int b){ return (a > b) ? a : b; } int peso(ABin a){ if(a == NULL) return 0; else return 1 + max(peso(a->dir), peso(a->esq)); } int contaNodos(ABin a){ if(a == NULL) return 0; else return 1 + contaNodos(a->dir) + contaNodos(a->esq); } // Balanceada: |peso(esq) - peso(dir)| <= 1 int balanceada(ABin a){ if(a == NULL) return 1; else{ if( balanceada(a->esq) && balanceada(a->dir) && (abs(peso(a->esq) - peso(a->dir)) <=1)) return 1 ; else return 0; } }