Sunteți pe pagina 1din 28

Make Money Fast!

Stoc k Frau d

Ponzi Schem e

Bank Robber y

Chapter 7:Trees
Nancy Amato
Parasol Lab, Dept. CSE, Texas A&M University
Acknowledgement: These slides are adapted from slides provided with Data Structures and Algorithms in C++, Goodrich, Tamassia and Mount (Wiley 2004)

http://parasol.tamu.edu

Outline and Reading


Tree Definitions and ADT (7.1) Tree Traversal Algorithms for General Trees (preorder and postorder) (7.2) BinaryTrees (7.3)
Traversals of Binary Trees (preorder, inorder, postorder, and Euler Tour) (7.3.6) Template method pattern (7.3.7)

Data structures for trees (7.1.4 and 7.3.4) C++ implementation (7.1.3 and 7.3.2)

Trees

What is a Tree
In computer science, a tree is an abstract model of a hierarchical structure A tree consists of nodes with a parent-child relation Applications:
Organization charts File systems Programming environments
ComputersRU s Sale s U S Internationa l Asi a Manufacturin g Laptop s Canad a Desktop s R& D

Europ e

Trees

Tree Terminology
Root: node without parent (A) Subtree: tree consisting of a node and its Internal node: node with at least one descendants child (A, B, C, F) A Leaf (aka External node): node without children (E, I, J, K, G, H, D) Ancestors of a node: parent, grandparent, great-grandparent, etc. C B Depth of a node: number of ancestors G F H Height of a tree: maximum depth of E any node (3) Descendant of a node: child, I J K grandchild, great-grandchild, etc. Trees
4

subtee

Exercise: Trees
Answer the following questions about the tree shown on the right:
What is the size of the tree (number of nodes)? Classify each node of the tree as a root, leaf, or internal node List the ancestors of nodes B, F, G, and A. Which are the parents? List the descendents of nodes B, F, G, and A. Which are the children? List the depths of nodes B, F, G, and A. What is the height of the tree? Draw the subtrees that are rooted at node F and at node K. A

Trees

Tree ADT
We use positions to abstract nodes Generic methods:
integer size() boolean isEmpty() objectIterator elements() positionIterator positions()

Query methods:
boolean isInternal(p) boolean isLeaf (p) boolean isRoot(p)

Update methods:
swapElements(p, q) object replaceElement(p, o)

Accessor methods:
position root() position parent(p) positionIterator children(p)

Additional update methods may be defined by data structures implementing the Tree ADT

Trees

A Linked Structure for General Trees


A node is represented by an object storing
Element Parent node Sequence of children nodes

B A D F

Node objects implement the Position ADT

B A C D E F

C Trees E

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 2
Make Money Fast!

l A o i h r O d v i v s o f a h c i d w pd r O e w )

1. Motivations 1.1 Greed

5 4 6
2.1 Stock Fraud

2. Methods

Reference s 2.3 Bank Robber y

7
2.2 Ponzi Scheme

1.2 Avidity

Trees

Exercise: Preorder Traversal


In a preorder traversal, a node is visited before its descendants List the nodes of this tree in preorder traversal order.
A

l A o i h r O d v i v s o f a h c i d w ) w ( d O e r p t v
I J K

Trees

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 3
cs16 /

l A o i h t r e ( ) o f a h c i d w ) w ( e d r O t s o p i v s

homeworks /

7 2 4
DDR.jav a 10K

8
programs / todo.tx t 1K

1
h1c.do c 3K

5
Stocks.jav a 25K

6
Robot.jav a 20K
10

h1nc.do c 2K

Trees

Exercise: Postorder Traversal


In a postorder traversal, a node is visited after its descendants List the nodes of this tree in postorder traversal order.
E A

l A o i h t r e ( o f a h c i d w ) w ( e d r O t s o p i v s t v
I J K

Trees

11

Binary Tree
A binary tree is a tree with the following properties:
Each internal node has two children The children of a node are an ordered pair

Applications:
arithmetic expressions decision processes searching
A

We call the children of an internal node left child and right child Alternative recursive definition: a binary tree is either
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
D

I
12

Trees

Arithmetic Expression Tree


Binary tree associated with an arithmetic expression
internal nodes: operators leaves: operands

Example: arithmetic expression tree for the expression (2 (a 1) + (3 b))


+ 2 a 1 Trees
13

3 b

Decision Tree
Binary tree associated with a decision process
internal nodes: questions with yes/no answer leaves: decisions

Example: dining decision


Want a fast meal? Yes How about coffee? Yes Starbucks No Spikes Trees No On expense account? Yes Al Forno No Caf Paragon
14

Properties of Binary Trees


Notation nnumber of nodes l number of leaves i number of internal nodes hheight
Properties: l= i+ 1 n = 2l 1 h i h (n 1)/2 l 2h h log2 l h log2 (n + 1) 1

Trees

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)
16

Update methods may be defined by data structures implementing the BinaryTree ADT

Trees

A Linked Structure for Binary Trees


A node is represented by an object storing
Element Parent node Left child node Right child node

B A D E Trees C D E
17

Node objects implement the Position ADT

B A C

Inorder Traversal
In an inorder traversal a node is visited after its left subtree and before its right subtree Application: draw a binary tree
x(v) = inorder rank of v y(v) = depth of v 6

l A o i h n r e ( ) f i n i r e ( t h l ) i v s f i n i r e ( h C d v t v s n e l v s n e l v

2 1 3 4 5 Trees 7

8 9

18

Exercise: Inorder Traversal


In an inorder traversal a node is visited after its left subtree and before its right subtree List the nodes of this tree in inorder traversal order.
E A

l A o i h n r e ( ) f i n i r e ( t h l ) i v s f i n i r e ( h C d v Trees
19

s n e l v t v s n e l v

Exercise: Preorder & InOrder Traversal


Draw a (single) binary tree T, such that Each internal node of T stores a single character A preorder traversal of T yields EXAMFUN An inorder traversal of T yields MAFXUEN

Trees

20

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

A o m h t i p r g s i e t n I p n ( i ) p n r x E e f i s C r p n e . v ( i f i e t n I i r p s e ( l C t h ) g ) ( t n i r p n

r i t x n v s l v t t i n l d v ) t e ) s l v t x ( )

+ 2 a 1 Trees 3 b

((2 (a 1)) + (3 b))


21

Evaluate Arithmetic Expressions


Specialization of a postorder traversal
recursive method returning the value of a subtree when visiting an internal node, combine the values of the subtrees o h v x l A i r f i e r ) t e r xpe l ( f h ) v i d r ype ( g C i ) v d h l otp a d e t s r v r y u t C t s s x e n l v

+ 2 5 1 Trees
22

3 2

Exercise: Arithmetic Expressions


Draw an expression tree that has Four leaves, storing the values 1, 5, 6, and 7 3 internal nodes, storing operations +, -, *, / (operators can be used more than once, but each internal node stores only one) The value of the root is 21

Trees

23

Euler Tour Traversal


Generic traversal of a binary tree Includes as special cases the preorder, postorder and inorder traversals Walk around the tree and visit each node three times: on the left (preorder) from below (inorder) on the right (postorder)

+
L

R
B

3 1
24

2 5 Trees

Euler Tour Traversal


A g r t m e l o T p e l t v s a o ( ) f i u e T ( , . t ) o b t m v s a ( f i u e T ( , . i h i r h c n p m h t i r o g l A d n E
L

( o h u T ) s n e l p

l i e , u

s n e l p + R
B

3 1 2
25

2 5

Trees

Print Arithmetic Expressions


o m h t i p ) r g s Specialization of an Euler Tour A traversal
Left-visit-action: if node is internal, print ( Bottom-visit-action: print value or operator stored at node Right-visit-action: if node is internal, print )

r i t x n T p i n r e t x E h p e u l a v t d s l E r p i i r p s e , T ( ) t f l . e i r P o h t a d s i r p s e , T ( ) t h g . r p i E f i n a n d t x t t x i

+ 2 a 1 Trees 3
m h t i r o g l A d n E

((2 (a 1)) + (3 b))


26

Template Method Pattern


Generic algorithm that can be specialized by redefining certain steps Implemented by means of an abstract C++ class Visit methods that can be redefined by subclasses Template method eulerTour
class EulerTour { protected: BinaryTree* tree; virtual void visitExternal(Position p, Result r) { } virtual void visitLeft(Position p, Result r) { } virtual void visitBelow(Position p, Result r) { } virtual void visitRight(Position p, Result r) { } int eulerTour(Position p) { Recursively called on the Result r = initResult(); left and right children if (tree>isExternal(p)) A Result object with fields { visitExternal(p, r); } leftResult, rightResult else { and finalResult keeps visitLeft(p, r); track of the output of the r.leftResult = eulerTour(tree recursive calls to >leftChild(p)); eulerTour visitBelow(p, r); 27 Trees r.rightResult = eulerTour(tree

Specializations of EulerTour
We show how to specialize class EulerTour to evaluate an arithmetic expression Assumptions
External nodes support a function value(), which returns the value of this node. Internal nodes provide a function operation(int, int), which returns the result of some binary operator on integers. class EvaluateExpression : public EulerTour { protected: void visitExternal(Position p, Result r) { r.finalResult = p.element().value(); } { void visitRight(Position p, Result r)

Operator op = p.element().operator(); r.finalResult = p.element().operation( r.leftResult, r.rightResult); } // Trees other details omitted };
28

S-ar putea să vă placă și