Professional Documents
Culture Documents
ASP Vezbe 07
ASP Vezbe 07
MAŠINSKI FAKULTET
mrosic@mas.bg.ac.rs
STABLA
Stabla su nelinearne strukture podataka.
Memorijska reprezentacija:
ulančana (češće)
sekvencijalna.
2
STABLA
Sastoje se od čvorova:
8 15
4 9 20
listovi
3
BINARNA STABLA
Čvorovi su uvek u relaciji roditelj – dete.
Binarno stablo je vrsta stabla gde svaki čvor ima
najviše dva deteta.
10
8 15
4 9 15 20
4
Tipične operacije nad stablima su:
Dodavanje (add),
Pretraživanje (search),
5
Definisanje čvora stabla
class Node:
def __init__(self, broj):
self.broj = broj
self.left = None
self.right = None
6
1
Operacija dodavanja
2
elementa add
from node import Node if __name__ == '__main__':
tree = Tree()
class Tree:
def __init__(self): tree.add(10)
self.root = None tree.add(8)
tree.add(15)
def add(self, broj): tree.add(4)
novi = Node(broj) tree.add(2)
if self.root is None:
self.root = novi
return
roditelj = None
tekuci = self.root
class Tree:
def __init__(self):
self.root = None
def removeTree(self):
self.root = None # garbeage collector will collect and remove
all other nodes from memory
if __name__ == '__main__':
tree = Tree()
tree.add(10)
tree.add(8)
tree.add(15)
Napomena:
tree.add(4)
Funkcija
tree.add(2) def add(self, broj):
je prethodno definisana.
tree.removeTree()
9
Obilazak stabla
8 15 8 15 8 15
4 9 12 20 4 9 12 20 4 9 12 20
10 8 4 9 15 12 20 4 8 9 10 12 15 20 4 9 8 12 20 15 10
10
Operacija obilaska stabla
1
from node import Node
class Tree:
def __init__(self):
self.root = None
if __name__ == '__main__':
tree = Tree()
tree.add(10)
tree.add(8)
tree.add(15)
tree.add(4)
tree.add(2)
tree.preOrder(tree.root)
print('-----------------')
Napomena:
tree.inOrder(tree.root)
print('-----------------') Funkcija
def add(self, broj):
tree.postOrder(tree.root)
je prethodno definisana.
11
Obilazak stabla preOrder
2
def preOrder(self, node):
12
Obilazak stabla inOrder
2
def inOrder(self, node):
13
Obilazak stabla postOrder
2
def postOrder(self, node):
14