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)
  1. Preorder - iteracyjnie
  2. Inorder - iteracyjnie
  3. Postorder - iteracyjnie
  4. Liczba węzłów w drzewie (1 pkt termin: 20:59:00 17-12-2015 lub zad.5)
  5. Liczba liści w drzewie (1 pkt termin: 20:59:00 17-12-2015 lub zad.4)
  6. 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)