06 - Trees

62
Trees www.tudorgirba.com

description

I used this set of slides for the lecture on Trees I gave at the University of Zurich for the 1st year students following the course of Formale Grundlagen der Informatik.

Transcript of 06 - Trees

Page 2: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9n3

n8

Page 3: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9n3

n8

Page 4: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9

n3

n8

Page 5: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9

n3

n8

edge

node

Page 6: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9

n3

n8

leaf

root

Page 7: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9

n3

n8

parent

child

Page 8: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9

n3

n8

subtree

Page 9: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9

n3

n8

path

Page 10: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9

n3

n8

height = 1

depth = level = 2

degree = 1

Page 11: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9

n3

n8

height = 1

depth = level = 1

degree = 3

Page 12: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9

n3

n8

0

1

2

3

Page 13: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9

n3

n8

ordered tree

leftmost rightmost

Page 14: 06 - Trees

n5

n2

n6

n10

n1

n7

n4

n9

n3

n8 n7

n4

n9n8

n1

n5

n4

n6

n3

n10

isomorphic trees

Page 15: 06 - Trees

n4

n2

n5

n1

n6

n3

n7

left right

left leftright right

Page 16: 06 - Trees

n4

n2

n5

n1

n3

n6 n4

n2

n5

n1

n6

n3

not a binary tree binary tree

n4

n2

n5

n1

n6

n3

n7

complete binary tree

Page 17: 06 - Trees

breadth-first traversal

n4

n2

n5

n1

n6

n3

Page 18: 06 - Trees

breadth-first traversal

n4

n2

n5

n1

n6

n3

1

Page 19: 06 - Trees

breadth-first traversal

n4

n2

n5

n1

n6

n3

2

1

Page 20: 06 - Trees

breadth-first traversal

n4

n2

n5

n1

n6

n3

2 3

1

Page 21: 06 - Trees

breadth-first traversal

n4

n2

n5

n1

n6

n3

2 3

4

1

Page 22: 06 - Trees

breadth-first traversal

n4

n2

n5

n1

n6

n3

2 3

4 5

1

Page 23: 06 - Trees

breadth-first traversal

n4

n2

n5

n1

n6

n3

2 3

4 65

1

Page 24: 06 - Trees

n4

n2

n5

n1

n6

n3

preorder(node)

visit(node).preorder(node.left).preorder(node.right).

Page 25: 06 - Trees

n4

n2

n5

n1

n6

n3

1

preorder(node)

visit(node).preorder(node.left).preorder(node.right).

Page 26: 06 - Trees

n4

n2

n5

n1

n6

n3

2

1

preorder(node)

visit(node).preorder(node.left).preorder(node.right).

Page 27: 06 - Trees

n4

n2

n5

n1

n6

n3

2

3

1

preorder(node)

visit(node).preorder(node.left).preorder(node.right).

Page 28: 06 - Trees

n4

n2

n5

n1

n6

n3

2

3 4

1

preorder(node)

visit(node).preorder(node.left).preorder(node.right).

Page 29: 06 - Trees

n4

n2

n5

n1

n6

n3

2 5

3 4

1

preorder(node)

visit(node).preorder(node.left).preorder(node.right).

Page 30: 06 - Trees

n4

n2

n5

n1

n6

n3

2 5

3 64

1

preorder(node)

visit(node).preorder(node.left).preorder(node.right).

Page 31: 06 - Trees

n4

n2

n5

n1

n6

n3

inorder(node)

inorder(node.left).visit(node).inorder(node.right).

Page 32: 06 - Trees

n4

n2

n5

n1

n6

n3

1

inorder(node)

inorder(node.left).visit(node).inorder(node.right).

Page 33: 06 - Trees

n4

n2

n5

n1

n6

n3

2

1

inorder(node)

inorder(node.left).visit(node).inorder(node.right).

Page 34: 06 - Trees

n4

n2

n5

n1

n6

n3

2

1 3

inorder(node)

inorder(node.left).visit(node).inorder(node.right).

Page 35: 06 - Trees

n4

n2

n5

n1

n6

n3

2

1 3

4

inorder(node)

inorder(node.left).visit(node).inorder(node.right).

Page 36: 06 - Trees

n4

n2

n5

n1

n6

n3

2

1 53

4

inorder(node)

inorder(node.left).visit(node).inorder(node.right).

Page 37: 06 - Trees

n4

n2

n5

n1

n6

n3

2 6

1 53

4

inorder(node)

inorder(node.left).visit(node).inorder(node.right).

Page 38: 06 - Trees

n4

n2

n5

n1

n6

n3

postorder (node)

postorder(node.left).postorder(node.right).visit(node).

Page 39: 06 - Trees

n4

n2

n5

n1

n6

n3

1

postorder (node)

postorder(node.left).postorder(node.right).visit(node).

Page 40: 06 - Trees

n4

n2

n5

n1

n6

n3

1 2

postorder (node)

postorder(node.left).postorder(node.right).visit(node).

Page 41: 06 - Trees

n4

n2

n5

n1

n6

n3

3

1 2

postorder (node)

postorder(node.left).postorder(node.right).visit(node).

Page 42: 06 - Trees

n4

n2

n5

n1

n6

n3

3

1 42

postorder (node)

postorder(node.left).postorder(node.right).visit(node).

Page 43: 06 - Trees

n4

n2

n5

n1

n6

n3

3 5

1 42

postorder (node)

postorder(node.left).postorder(node.right).visit(node).

Page 44: 06 - Trees

n4

n2

n5

n1

n6

n3

3 5

1 42

6

postorder (node)

postorder(node.left).postorder(node.right).visit(node).

Page 45: 06 - Trees

!"#$%&'(")$*

!

"#$#%&'!&$()*+,%&)$!&-!.,--#/!)$!(*)+!0#$#*,%&)$!%)!0#$#*,%&)$1!

Example (group 15)

Page 46: 06 - Trees

!"#$%&'(")$*

!

"#$#%&'!&$()*+,%&)$!&-!.,--#/!)$!(*)+!0#$#*,%&)$!%)!0#$#*,%&)$1!

Example (group 15)

Page 47: 06 - Trees

Hierarchical structure

Page 48: 06 - Trees

Binary search tree

n4

n2

n5

n1

n6

n3

2 6

1 53

4

Page 49: 06 - Trees

n4 n2 n5 n1 n6 n3

2 61 53 4

Page 50: 06 - Trees

n4 n2 n5 n1 n6 n3

2 61 53 4

Page 51: 06 - Trees

n4

n2

n5

n1

n6

n3

2 6

1 53

4

Page 52: 06 - Trees

n4

n2

n5

n1

n6

n3

2

6

1

5

3

4

Page 53: 06 - Trees

Binary search tree

n4

n2

n5

n1

n6

n3

2 6

1 53

4

Page 54: 06 - Trees

a + b - c * d

Page 55: 06 - Trees

a + b - c * d

Page 56: 06 - Trees

a

+

b

-

c

*

d

Page 57: 06 - Trees

a

+

b

-

c

*

d

operator

operand

Page 58: 06 - Trees

Infix notation

a

+

b

-

c

*

d

Postfix notation

Prefix notation

Page 59: 06 - Trees

Infix notation

a

+

b

-

c

*

d

Postfix notation

Prefix notation -+ab*cd

Page 60: 06 - Trees

Infix notation

a

+

b

-

c

*

d

a+b-c*dPostfix notation

Prefix notation -+ab*cd

Page 61: 06 - Trees

Infix notation

a

+

b

-

c

*

d

a+b-c*dPostfix notation ab+cd*-

Prefix notation -+ab*cd