powrót
Ćwiczenia 10 - Struktury grafowe (2 pkt termin: 20:59:00 17-12-2015)
Main
STRUCT-TREE T
MAKE-TREE(T,10)
PREORDER-WALK(T.root)
INORDER-WALK(T.root)
POSTORDER-WALK(T.root)
PRINT-TREE(T)
Drzewo
STRUCT-TREE
root = NIL
STRUCT-NODE
key = NIL
p = NIL
left = NIL
right = NIL
MAKE-TREE(T,n)
for i = 1 to n
new.key = rand(1,100) //new nowy NODE
x = T.root
p = NIL
r = NIL
while x ≠ NIL
p = x
r = rand(1,2)
if r = 1
x = x.left
else
x = x.right
new.p = p
if T.root = NIL
T.root = new
else
if r = 1
p.left = new
else
p.right = new
PREORDER-WALK(x)
if x ≠ NIL
write x.key
PREORDER-WALK(x.left)
PREORDER-WALK(x.right)
INORDER-WALK(x)
if x ≠ NIL
INORDER-WALK(x.left)
write x.key
INORDER-WALK(x.right)
POSTORDER-WALK(x)
if x ≠ NIL
POSTORDER-WALK(x.left)
POSTORDER-WALK(x.right)
write x.key
PRINT-TREE(T)
WALK-TREE(T.root,0)
WALK-TREE(x,d)
if x ≠ NIL
WALK-TREE(x.left,d + 1)
for i = 1 to d
write " "
write x.key
WALK-TREE(x.right,d + 1)
- Preorder - iteracyjnie
- Inorder - iteracyjnie
- Postorder - iteracyjnie
- Liczba węzłów w drzewie (1 pkt termin: 20:59:00 17-12-2015 lub zad.5)
- Liczba liści w drzewie (1 pkt termin: 20:59:00 17-12-2015 lub zad.4)
- Napisz procedure void make_tree_rek(Tree t, int n), która wygeneruje losowe drzewo w sposób rekurencyjny. (Uwaga: Nie używamy zmiennych statycznych, ani globalnych) (5 pkt. termin: do egzaminu)