You are on page 1of 18

TREES

• trees

• binary trees

• traversals of trees

• template method pattern

• data structures for trees

Trees 1
Trees
• a tree represents a hierarchy
- organization structure of a corporation
Electronics R’Us

R&D Sales Purchasing Manufacturing

Domestic International TV CD Tuner

Canada S. America Overseas

Africa Europe Asia Australia


- table of contents of a book
student guide

overview grading environment programming support code

exams homeworks programs

Trees 2
Another Example
• Unix or DOS/Windows file system

/user/rt/courses/

cs016/ cs252/

grades grades
homeworks/ programs/ projects/

hw1 hw2 hw3 pr1 pr2 pr3


papers/ demos/

buylow sellhigh market

Trees 3
Terminology
• A is the root node.
• B is the parent of D and E.
• C is the sibling of B
• D and E are the children of B.
• D, E, F, G, I are external nodes, or leaves.
• A, B, C, H are internal nodes.
• The depth (level) of E is 2
• The height of the tree is 3.
• The degree of node B is 2.
A
B C

D E F G H

I
Property: (# edges) = (#nodes) − 1
Trees 4
Binary Trees
• Ordered tree: the children of each node are ordered.
• Binary tree: ordered tree with all internal nodes of
degree 2.
• Recursive definition of binary tree:
• A binary tree is either
- an external node (leaf), or
- an internal node (the root) and two binary trees
(left subtree and right subtree)

Trees 5
Examples of Binary Trees
• arithmetic expression
+
× ×

+ 5 4 +
× + 7 2
3 + 2 8
1 +
4 6
((((3 × (1 + (4 + 6))) + (2 + 8)) × 5) + ( 4 × (7 + 2)))

• river

Trees 6
Properties of Binary Trees
• (# external nodes ) = (# internal nodes) + 1
• (# nodes at level i) ≤ 2 i
• (# external nodes) ≤ 2 (height)
• (height) ≥ log2 (# external nodes)
• (height) ≥ log2 (# nodes) − 1
• (height) ≤ (# internal nodes) = ((# nodes) − 1)/2

Level
0

Trees 7
The Tree ADT
• the nodes of a tree are viewed as positions
• generic container methods
- size(), isEmpty(), elements(), newContainer()
• positional container methods
- positions(), replace(p,e), swap(p,q)
• query methods
- isRoot(p), isInternal(p), isExternal(p)
• accessor methods
- root(), parent(p), children(p), siblings(p)
• update methods (application specific)
Container

PositionalContainer

PositionalSequence InspectableTree

Sequence

Trees 8
The Binary Tree ADT
• extends the tree ADT
• accessor methods
- leftChild(p), rightChild(p), sibling(p)
• update methods
- expandExternal(p), removeAboveExternal(p)
- other application specific methods
• interface hierarchy of positional containers

Container

PositionalContainer

PositionalSequence InspectableTree

Sequence InspectableBinaryTree

Trees 9
Traversing Trees
• preorder traversal

Algorithm preOrder(v)
“visit” node v
for each child w of v do
recursively perform preOrder(w)

• reading a document from beginning to end

Paper

Title Abstract §1 §2 §3 References

§ 1.1 § 1.2 § 2.1 § 2.2 § 2.3 § 3.1 § 3.2

Trees 10
Traversing Trees
• postorder traversal

Algorithm postOrder(v)
for each child w of v do
recursively perform postOrder(w)
“visit” node v

• du (disk usage) command in Unix


5124K
/user/rt/courses/
1K
249K 4874K
cs016/ cs252/
2K 1K

10K 229K 4870K


grades homeworks/ programs/ projects/ grades
8K 1K 1K 1K 3K

82K 4787K
hw1 hw2 hw3 pr1 pr2 pr3 papers/ demos/
3K 2K 4K 57K 97K 74K 1K 1K

buylow sellhigh market


26K 55K 4786K

Trees 11
Evaluating Arithmetic
Expressions
• specialization of a postorder traversal
Algorithm evaluateExpression(v)
if v is an external node
return the variable stored at v
else
let o be the operator stored at v
x ← evaluateExpression(leftChild(v))
y ← evaluateExpression(rightChild(v))
return x o y
1

2 3
/ +
4 5 6 7
× + × 6

8 9 10 11 12 13
+ 3 − 2 3 −
16 17 20 21 26 27
3 1 9 5 7 4

Trees 12
Traversing Trees
• inorder traversal of a binary tree
Algorithm inOrder(v)
recursively perform inOrder(leftChild(v))
“visit” node v
recursively perform inOrder(rightChild(v))
• printing an arithmetic expression
- specialization of an inorder traversal
- print “(“ before traversing the left subtree
- print “)” after traversing the right subtree
+
× ×

+ 5 4 +
× + 7 2
3 + 2 8
1 +
4 6
((((3 × (1 + (4 + 6))) + (2 + 8)) × 5) + ( 4 × (7 + 2)))

Trees 13
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

/ +

× + × 6

+ 3 − 2 3 −

3 1 9 5 7 4

Trees 14
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 it subclasses

public abstract class BinaryTreeTraversal {

protected BinaryTree tree;

...

protected Object traverseNode(Position p) {


TraversalResult r = initResult();
if (tree.isExternal(p)) {
external(p, r);
} else {
left(p, r);
r.leftResult = traverseNode(tree.leftChild(p));
below(p, r);
r.rightResult = traverseNode(tree.rightChild(p));
right(p, r);
}
return result(r);
}

Trees 15
Specializing the Generic Binary
Tree Traversal
• printing an arithmetic expression

public class PrintExpressionTraversal


extends BinaryTreeTraversal {

...

protected void external(Position p, TraversalResult r) {


System.out.print(p.element());
}

protected void left(Position p, TraversalResult r) {


System.out.print("(");
}

protected void below(Position p, TraversalResult r) {


System.out.print(p.element());
}

protected void right(Position p, TraversalResult r) {


System.out.print(")");
}

Trees 16
Linked Data Structure for
Binary Trees


root
5
size

∅ ∅

∅ ∅ ∅ ∅

Baltimore Chicago New York Providence Seattle

Trees 17
Representing General Trees
• tree T
A

B C D

E F G
• binary tree T' representing T
A

E C

F D

Trees 18

You might also like