Trees

CSCI 3333 Data Structures
Trees
Acknowledgement






Dr. Bun Yue
Mr. Charles Moen
Dr. Wei Ding
Ms. Krishani Abeysekera
Dr. Michael Goodrich
Dr. Richard F. Gilberg
What is a Tree


In computer
Computers”R”Us
science, a tree is
an abstract
model of a
Sales
Manufacturing
R&D
hierarchical
structure
A tree consists US International Laptops Desktops
of nodes with a
parent-child
Europe
Asia
Canada
relation
Some Tree Applications

Applications:




Organization charts
File Folders
Email Repository
Programming environments: e.g.
drop down menus.
Trees
Are these trees?
1
3
2
4
5
Tree Terminology







Root: node without parent (A)

Internal node: node with at least
one child (A, B, C, F)
External node (a.k.a. leaf ):
node without children (E, I, J, K,
G, H, D)
Ancestors of a node: parent,
grandparent, grandgrandparent, etc.
Depth of a node: number of
E
ancestors
Height of a tree: maximum
depth of any node (3)
Descendant of a node: child,
I
grandchild, grand-grandchild,
etc.
Subtree: tree consisting
of a node and its
descendants
A
B
C
F
J
G
K
D
H
subtree
Example
Recursive Definition of Trees


An empty tree is a tree.
A tree contains a root node
connected to 0 or more child subtrees.
Tree ADT (§ 6.1.2)


We use positions to
abstract nodes
Generic methods:





integer size()
boolean isEmpty()
Iterator elements()
Iterator positions()
Accessor methods:



position root()
position parent(p)
positionIterator
children(p)

Query methods:




Update method:


boolean isInternal(p)
boolean isExternal(p)
boolean isRoot(p)
object replace (p, o)
Additional update
methods may be defined
by data structures
implementing the Tree
ADT
Tree Traversal


Traversing is the systematic way of
accessing, or ‘visiting’ all the nodes
in a tree.
Consider the three operations on a
binary tree:



V: Visit a node
L: (Recursively) traverse the left
subtree of a node
R: (Recursively) traverse the right
subtree of a node
Preorder Traversal



A traversal visits the nodes of
a tree in a systematic manner
In a preorder traversal, a
node is visited before its
descendants
Application: print a structured
document
1
Algorithm preOrder(v)
visit(v)
for each child w of v
preorder (w)
Make Money Fast!
2
5
1. Motivations
9
2. Methods
3
4
1.1 Greed
1.2 Avidity
6
2.1 Stock
Fraud
7
2.2 Ponzi
Scheme
References
8
2.3 Bank
Robbery
Postorder Traversal


In a postorder traversal, a
node is visited after its
descendants
Application: compute space
used by files in a directory
and its subdirectories
9
Algorithm postOrder(v)
for each child w of v
postOrder (w)
visit(v)
cs16/
3
8
7
homeworks/
todo.txt
1K
programs/
1
2
h1c.doc
3K
h1nc.doc
2K
4
DDR.java
10K
5
Stocks.java
25K
6
Robot.java
20K
Binary Tree

A binary tree is a tree with the
following properties:





a tree consisting of a single
node, or
a tree whose root has an
ordered pair of children, each
of which is a binary tree
7/31/2017 5:45 PM
Trees
arithmetic
expressions
decision processes
searching

Each internal node has two
children
The children of a node are an
ordered pair
We call the children of an
internal node left child and
right child
Alternative recursive
definition: a binary tree is
either

Applications:


A
B
D
C
E
H
F
G
I
13
Decision Tree

Binary tree associated with a decision process



internal nodes: questions with yes/no answer
external nodes: decisions
Example: dining decision
Want a fast meal?
No
Yes
How about coffee?
Yes
Starbucks
7/31/2017 5:45 PM
On expense account?
No
Yes
Spike’s
Al Forno
Trees
No
Café Paragon
14
Properties of Binary Trees

Notation
n number of
nodes
e number of
external nodes
i number of
internal nodes
h height
7/31/2017 5:45 PM
Trees
Properties:
 e = i + 1
 n = 2e - 1
 h  i
 h  (n - 1)/2
 e  2h
 h  log2 e
 h  log2 (n +
1) - 1
15
BinaryTree ADT


The BinaryTree ADT
extends the Tree ADT,
i.e., it inherits all the
methods of the Tree ADT
Additional methods:
 position leftChild(p)
 position rightChild(p)
 position sibling(p)
7/31/2017 5:45 PM
Trees

Update methods
may be defined
by data structures
implementing the
BinaryTree ADT
16
Inorder Traversal


In an inorder traversal a
node is visited after its
left subtree and before
its right subtree
Application: draw a
binary tree


Algorithm inOrder(v)
if isInternal (v)
inOrder (leftChild (v))
visit(v)
if isInternal (v)
inOrder (rightChild (v))
x(v) = inorder rank of v
y(v) = depth of v
6
2
8
1
4
3
7/31/2017 5:45 PM
7
9
5
Trees
17
Expression Notation

There are three common notations
for expressions:



Prefix: operator come before operands.
Postfix: operator come after operands.
Infix:
Binary operator come between operands.
 Unary operator come before the operand.

Examples

Infix: (a+b)*(c-d/f/(g+h))


Prefix: *+ab-c//df+gh



Used by human being.
E.g. functional language such as Lisp:
Lisp: (* (+ a b) (- c (/ d (/ f (+ g h)))))
Postfix: ab+cdf/gh+/-*

E.g. Postfix calculator
Expression Trees

An expression tree can be used to
represent an expression.



Operator: root
Operands: child sub-trees
Variable and constants: leaf nodes.
Traversals of Expression Trees



Preorder traversal => prefix
notation.
Postorder traversal => postfix
notation.
Inorder traversal with parenthesis
added => infix notation.
Print Arithmetic Expressions

Specialization of an
inorder traversal



print operand or operator
when visiting node
print “(“ before traversing
left subtree
print “)“ after traversing
right subtree
+


-
2
a
7/31/2017 5:45 PM
3
Algorithm printExpression(v)
if isInternal (v)
print(“(’’)
inOrder (leftChild (v))
print(v.element ())
if isInternal (v)
inOrder (rightChild (v))
print (“)’’)
b
((2  (a - 1)) + (3  b))
1
Trees
22
Data Structure for Trees

A node is represented
by an object storing




Element
Parent node
Sequence of children
nodes

B

Node objects
implement the Position
ADT
A
B
D
A
C
7/31/2017 5:45 PM

D
F
F

E
C
Trees

E
23
Data Structure for Binary Trees

A node is
represented by an
object storing





Element
Parent node
Left child node
Right child node

B

Node objects
implement the
Position ADT
B
A
A
D
C
7/31/2017 5:45 PM

D

E

C
Trees


E
24
Questions and Comments?