Arvores binarias
#include
struct tno{ int num; struct tno *esq; struct tno *dir; };
void incluir (int n); void nos(struct tno*); void soman(struct tno*); void profundidade(struct tno*,int); void subArvore(struct tno *raiz);
void emOrdem(struct tno*); void preOrdem(struct tno*); void posOrdem(struct tno *);
struct tno *raiz; int contnos; int somanos=0; int altura=-1; int folha=0; int subarvores=0;
int main(void)
{
incluir(20); incluir(22); incluir(18); incluir(25); incluir(23); incluir(15); incluir(19); incluir(30); incluir(16); incluir(29); incluir(28); incluir(14); incluir(21); emOrdem(raiz); printf("__________________________\n"); preOrdem(raiz); printf("__________________________\n"); posOrdem(raiz); printf("__________________________\n"); nos(raiz); printf("nos: %d\n", contnos); soman(raiz); printf("soma dos nos: %d\n", somanos); profundidade(raiz,-1); printf("profundidade: %d\n",altura); printf("folhas: %d\n",folha); subArvore(raiz); printf("Sub Arvores: %d\n",subarvores); getchar(); return 0;
}
void incluir (int n)
{
struct tno *aux ; struct tno *novo; novo = (struct tno*) malloc (sizeof (struct tno)); novo->num = n; novo->esq = NULL; novo->dir = NULL; if (raiz==NULL) { raiz = novo; } else { aux = raiz; for(;;) { if(aux->esq == NULL && aux->num > n) { aux->esq = novo; break; } if(aux->dir == NULL && aux->num dir = novo; break; } if (aux->num > n ) { aux = aux->esq; } else { aux = aux->dir; } } }
}
void emOrdem(struct tno *raiz)
{
if(raiz != NULL) { emOrdem(raiz->esq);