Extras din seminar
int nr_frunze_2(ARBORE a);
/* determina numarul de frunze al unui arbore dat */
int *numar_desc(ARBORE a);
/* determina numarul de noduri cu 0, 1, 2 descendenti
dintr-un arbore dat
utilizeaza variabile de acumulare
*/
BOOLEAN identic(ARBORE a, ARBORE b);
/* verifica identitatea arborilor a si b
( ca structura si continut )
*/
/*char */ void arb2str(ARBORE a);
/* afiseaza un arbore sub forma cu paranteze */
void arb_to_str(ARBORE a, char *str);
/* genereaza sirul de caractere care contine
descrierea cu paranteze a unui arbore dat
*/
void parcurgeRSD(ARBORE a, void (*prel)(ARBORE));
/* parcurgerea in preordine a unui arbore binar */
void parcurgeSRD(ARBORE a, void (*prel)(ARBORE));
/* parcurgerea in inordine a unui arbore binar */
void parcurgeSDR(ARBORE a, void (*prel)(ARBORE));
/* parcurgerea in postordine a unui arbore binar */
Arbbin.c
#include <stdio.h>
#include <alloc.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include "arbbin.h"
void err_exit(char *mesaj)
{ fprintf(stderr, "%sn", mesaj); exit(1); }
ARBORE cr_nod(INFO cheie)
{ ARBORE a=(ARBORE)malloc(sizeof(NOD));
if(!a) err_exit("cr_nod -- Eroare alocare");
a->cheie = cheie;
a->st=a->dr=NULL;
return a;
}
ARBORE init_nod(INFO cheie, ARBORE st, ARBORE dr)
{ ARBORE a=cr_nod(cheie);
return (a->st=st, a->dr=dr, a);
}
int fvirg(char *lin, int k, int n)
/* gaseste pozitia virgulei ce separa descrierea
fiului sting de cea a fiului drept al nodului curent */
ARBORE genarb(char *lin, int incep, int sf)
/*
generarea unui arbore binar pornind de la o notatie
de forma: a(b(c,d),e(f(g,_),h(l,s))) }
este generat un arbore a carui descriere
corespunde portiunii din linia de text cuprinsa
intre elementele de index "Inc" respectiv "Sf"
*/
Preview document
Conținut arhivă zip
- Arbori Binari.doc