Похожие презентации:
2_BinarnaStabla
1. Programski jezik C
Binarna stabla2. Binarna stabla
• Svaki čvor sadrži informaciju i dvapokazivača:
– levi ukazuje na podstablo koje se sastoji iz čvorova
manjih od tekućeg
– desni ukazuje na podstablo koje se sastoji iz čvorova
većih od tekućeg
• Postoji i osnovni čvor – koren
• Čvor koji nema ni jedan podčvor se zove list
• Dobre osobine
– binarno stablo očuvava elemente sortirane
– brza pretraga
3. Binarna stabla
• Primer:typedef int TIP;
typedef struct cvor_st
{
TIP inf;
struct cvor_st *desni;
struct cvor_st *levi;
} BCVOR;
...
BCVOR *koren;
4. Primer
10koren
5
12
NULL
1
NULL
7
NULL
NULL
NULL
NULL
5. Operacije sa stablom
1. Ubacivanje u stablo2. Pronalaženje čvora
3. Brisanje čvora
4. Brisanje stabla
6. 1. Ubacivanje u stablo
• Kreira se novi čvor– novi = (BCVOR *)malloc(sizeof(BCVOR));
• prođe se kroz stablo i kada se stigne do
kraja stabla (naiđe na list), umetne se
ispod njega (levo ili desno zavisi od
sadržaja)
ubacist.c
7. Ubacivanje u stablo
10koren
5
12
NULL
1
NULL
NULL
novi
7
NULL
NULL
9
NULL
NULL
NULL
8. Ubacivanje u stablo
10koren
5
12
NULL
1
NULL
NULL
novi
7
NULL
9
NULL
NULL
NULL
9. 2. Pronalaženje čvora
• Krene se od korena i gleda da li je sadržajtraženog čvora manji ili veći od tekućeg
• Ako je manji, ide se u levo podstablo
• Ako je veći, ide se u desno podstablo
• Ako je jednak, vrati se pokazivač na tekući
pronst.c
10. 3. Brisanje čvora
Krene se od korena i gleda se da li je sadržaj traženog
čvora manji ili veći od tekućeg
Ako je manji, ide se u levo podstablo
Ako je veći, ide se u desno podstablo
Ako je jednak, obriše se čvor i obavi se prevezivanje
a) ako je čvor koji se briše list, samo se obriše, a onaj čvor koji je
ukazivao na njega se ažurira (NULL)
b) ako čvor koji se briše ima samo jedan podčvor, samo se obriše,
a onaj koji je ukazivao na obrisanog se preveže na podčvor
c) ako čvor koji se briše ima oba podčvora, on se obriše, a na
njegovo mesto se uveže najmanji element u njegovom desnom
podstablu
a) najmanji element koji je uvezan umesto izbrisanog se uklanja sa
originalne lokacije i radi se isto prevezivanje
11. a) brisanje lista
10koren
5
12
NULL
1
NULL
NULL
7
NULL
brisist.c
6
NULL
9
NULL
NULL
NULL
12. a) brisanje lista
10koren
5
12
NULL
1
NULL
NULL
7
NULL
NULL
brisist.c
6
NULL
NULL
13. b) brisanje čvora sa jednim podstablom
10koren
5
12
NULL
1
NULL
NULL
7
NULL
brisist.c
6
NULL
NULL
14. b) brisanje čvora sa jednim podstablom
10koren
5
12
NULL
NULL
1
NULL
NULL
brisist.c
6
NULL
NULL
15. c) brisanje čvora sa dva podstabla
10koren
5
12
NULL
1
NULL
NULL
7
NULL
brisist2.c
6
NULL
9
NULL
NULL
NULL
brisist3.c
16. c) brisanje čvora sa dva podstabla
10koren
5
12
NULL
1
NULL
NULL
7
NULL
brisist2.c
6
najmanji
NULL
9
NULL
NULL
NULL
brisist3.c
17. c) brisanje čvora sa dva podstabla
10koren
OPREZ!
u jednom
trenutku
imamo dva
čvora sa istim
inf!
6
12
NULL
1
NULL
NULL
7
NULL
brisist2.c
6
najmanji
NULL
9
NULL
NULL
NULL
brisist3.c
18. c) brisanje čvora sa dva podstabla
10koren
OPREZ!
u ovom
trenutku
imamo dva
čvora sa istim
inf!
6
12
NULL
1
NULL
NULL
7
NULL
brisist2.c
6
najmanji
NULL
9
NULL
NULL
NULL
brisist3.c
19. c) brisanje čvora sa dva podstabla
10koren
6
12
NULL
1
NULL
NULL
7
NULL
NULL
brisist2.c
9
NULL
NULL
brisist3.c
20. 4. Brisanje stabla
• Krene se od korena i briše se levo i desnopodstablo, pa onda koren
Финансы