Trees trees binary trees traversals of trees template

• • • Trees trees binary trees traversals of trees template method pattern data structures for trees 1

Trees • a tree represents a hierarchy examples: organization structure of a corporation table of contents of a book 2

Another Example • ` Unix or DOS/Windows file system 3

4

Binary Trees 5

Examples of Binary Trees • arithmetic expression • river 6

Examples of Binary Trees • decision trees 7

Properties of Binary Trees 8

ADTs for Trees • generic container methods -size(), is. Empty(), elements() • positional container methods -positions(), swap. Elements(p, q), replace. Element(p, e) • query methods -is. Root(p), is. Internal(p), is. External(p) • accessor methods -root(), parent(p), children(p) • update methods -application specific 9

ADTs for Binary Trees • accessor methods -left. Child(p), right. Child(p), sibling(p) • update methods -expand. External(p), remove. Above. External(p) -other application specific methods 10

Traversing Trees • preorder traversal Algorithm pre. Order(v) “visit” node v for each child w of v do recursively perform pre. Order(w) • reading a document from beginning to end 11

Traversing Trees • postorder traversal Algorithm post. Order(v) for each child w of v do recursively perform post. Order(w) “visit” node v • du (disk usage) command in Unix 12

Evaluating Arithmetic Expressions • specialization of a postorder traversal Algorithm evaluate. Expression(v) if v is an external node return the variable stored at v else let o be the operator stored at v x evaluate. Expression(left. Child(v)) y evaluate. Expression(right. Child(v)) return x o y 13

Traversing Trees • inorder traversal of a binary tree Algorithm in. Order(v) recursively perform in. Order(left. Child(v)) “visit” node v recursively perform in. Order(right. Child(v)) • printing an arithmetic expression specialization of an inorder traversal print “(“ before traversing the left subtree print “)” after traversing the right subtree 14

Euler Tour Traversal • generic traversal of a binary tree • the preorder, inorder, and postorder traversals are special cases of the Euler tour traversal • “walk around” the tree and visit each node three times: – on the left – from below – on the right 15

Template Method Pattern • generic computation mechanism that can be specialized by redefining certain steps • implemented by means of an abstract Java class with methods that can be redefined by its subclasses 16

Specializing the Generic Binary Tree Traversal • printing an arithmetic expression public class Print. Expression. Traversal extends Binary. Tree. Traversal {. . . protected void external(Position p, Traversal. Result r) { System. out. print(p. element()); } protected void left(Position p, Traversal. Result r) { System. out. print("("); } protected void below(Position p, Traversal. Result r) { System. out. print(p. element()); } protected void right(Position p, Traversal. Result r) { System. out. print(")"); } 17

Linked Data Structure for Binary Trees 18

Representing General Trees tree T binary tree T' representing T 19
- Slides: 19