Professional Documents
Culture Documents
PII - A11 - Stabla (1. Dio)
PII - A11 - Stabla (1. Dio)
2016.
A11 BINARNA STABLA
Napisati program u kojem treba:
• definisati tip CVOR kojim se reprezentuje čvor binarnog stabla (informacioni sadržaj
treba da bude cijeli broj),
• definisati funkciju koja dodaje lijevog sina zadatom čvoru,
• definisati funkciju koja dodaje desnog sina zadatom čvoru,
• definisati funkciju koja briše zadati čvor iz stabla,
• definisati funkciju koja briše stablo,
• definisati funkciju koja ispisuje sadržaj stabla u preorder redoslijedu obilaska,
• definisati funkciju koja ispisuje sadržaj stabla u inorder redoslijedu obilaska,
• definisati funkciju koja ispisuje sadržaj stabla u postorder redoslijedu obilaska,
• definisati funkciju koja računa i vraća ukupan broj čvorova stabla,
• definisati funkciju koja računa i vraća sumu vrijednosti svih čvorova stabla,
• definisati funkciju koja računa i vraća ukupan broj listova stabla,
• definisati funkciju koja računa i vraća dubinu stabla,
• u glavnom programu ilustrovati rad sa binarnim stablom tj. definisanim funkcijama.
typedef struct c_stablo { int i_stablo; struct c_stablo *lijevi, *desni; } C_STABLO;
typedef struct c_stek { C_STABLO *i_stek; struct c_stek *sljedeci; } C_STEK;
C_STABLO* novi_c_stablo(int i) {
C_STABLO *novi = (C_STABLO *)malloc(sizeof(C_STABLO));
novi->lijevi = novi->desni = 0;
novi->i_stablo = i;
return novi;
}
C_STEK* novi_c_stek(C_STABLO *i) {
C_STEK *novi = (C_STEK *)malloc(sizeof(C_STEK));
novi->sljedeci = 0;
novi->i_stek = i;
return novi; C_STABLO* pop(C_STEK **ptos) {
} if (*ptos == 0) return 0;
C_STEK *stari = *ptos;
void push(C_STEK **ptos, C_STABLO *i) { C_STABLO *i = stari->i_stek;
C_STEK *novi = novi_c_stek(i); *ptos = stari->sljedeci;
novi->sljedeci = *ptos; free(stari);
*ptos = novi; return i;
} }