You are on page 1of 18

TREES

trees
binary trees
traversals of trees
template method pattern
data structures for trees

Trees

Trees
a tree represents a hierarchy
- organization structure of a corporation
Electronics RUs

R&D

Sales

Domestic

Canada

Purchasing

Manufacturing

International

S. America

Africa

TV

CD

Tuner

Overseas

Europe

Asia

Australia

- table of contents of a book


student guide

overview

exams

Trees

grading

environment

homeworks

programs

programming

support code

Another Example
Unix or DOS/Windows file system

/user/rt/courses/

cs016/

grades

homeworks/

hw1 hw2

hw3

cs252/

programs/

pr1

pr2

projects/

pr3

papers/

buylow

Trees

sellhigh

grades

demos/

market

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

H
I

Property: (# edges) = (#nodes) 1


Trees

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

Examples of Binary Trees


arithmetic expression

+
+

1
4

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

river

Trees

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
1
2
3
4

Trees

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

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

Trees

PositionalSequence

InspectableTree

Sequence

InspectableBinaryTree

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.1

Trees

1.2

2.1

2.2

2.3

3.1

References

3.2

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
cs016/
2K

4874K
cs252/
1K

10K
grades
8K

229K

homeworks/
1K

4870K

programs/
1K

projects/
1K
82K

hw1 hw2
3K

Trees

2K

hw3

pr1

pr2

pr3

4K

57K

97K

74K

grades
3K
4787K

papers/
1K

demos/
1K

buylow

sellhigh

market

26K

55K

4786K

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

+
+

9
3

10

17

20

11
2

16

Trees

21
5

7
6

12
3

13

26
7

27
4

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

+
+

1
4

((((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

+
+

+
3

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

Trees

Chicago

New York

Providence

Seattle

17

Representing General Trees


tree T

binary tree T' representing T


A
B
E

C
F

D
G

Trees

18

You might also like