![Page 1: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/1.jpg)
Chapter 7:Trees
Nancy AmatoParasol 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)
Make Money Fast!
StockFraud
PonziScheme
BankRobbery
http://parasol.tamu.edu
![Page 2: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/2.jpg)
Trees
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)
2
![Page 3: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/3.jpg)
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
Computers”R”Us
Sales R&DManufacturing
Laptops DesktopsUS International
Europe Asia Canada
3
![Page 4: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/4.jpg)
Trees subtee
Tree Terminology
• Root: node without parent (A)• Internal node: node with at least one
child (A, B, C, F)• Leaf (aka External node): node
without children (E, I, J, K, G, H, D)• Ancestors of a node: parent,
grandparent, great-grandparent, etc.• Depth of a node: number of
ancestors• Height of a tree: maximum depth of
any node (3)• Descendant of a node: child,
grandchild, great-grandchild, etc.
A
B DC
G HE F
I J K
• Subtree: tree consisting of a node and its descendants
4
![Page 5: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/5.jpg)
Trees
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
B DC
G HE F
I J K
5
![Page 6: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/6.jpg)
Trees
Tree ADT
• We use positions to abstract nodes
• Generic methods:• integer size()• boolean isEmpty()• objectIterator elements()• positionIterator positions()
• Accessor methods:• position root()• position parent(p)• positionIterator children(p)
• Query methods:• boolean isInternal(p)• boolean isLeaf (p)• boolean isRoot(p)
• Update methods:• swapElements(p, q)• object replaceElement(p, o)
• Additional update methods may be defined by data structures implementing the Tree ADT
6
![Page 7: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/7.jpg)
Trees
A Linked Structure for General Trees
• A node is represented by an object storing
• Element• Parent node• Sequence of children
nodes
• Node objects implement the Position ADT
B
DA
C E
F
B
A D F
C
E7
![Page 8: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/8.jpg)
Trees
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
Algorithm preOrder(v)visit(v)for each child w of v
preOrder(w)
Make Money Fast!
1. Motivations References2. Methods
2.1 StockFraud
2.2 PonziScheme1.1 Greed 1.2 Avidity
2.3 BankRobbery
1
2
3
5
4 6 7 8
9
8
![Page 9: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/9.jpg)
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.
Algorithm preOrder(v)visit(v)for each child w of v
preOrder (w)
A
B DC
G HE F
I J K
9
![Page 10: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/10.jpg)
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
Algorithm postOrder(v)for each child w of v
postOrder(w)visit(v)
cs16/
homeworks/todo.txt1Kprograms/
DDR.java10K
Stocks.java25K
h1c.doc3K
h1nc.doc2K
Robot.java20K
9
3
1
7
2 4 5 6
8
10
![Page 11: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/11.jpg)
Trees
Exercise: Postorder Traversal
Algorithm postOrder(v)for each child w of v
postOrder(w)visit(v)
• In a postorder traversal, a node is visited after its descendants
• List the nodes of this tree in postorder traversal order.
A
B DC
G HE F
I J K
11
![Page 12: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/12.jpg)
Trees
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
• 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
• Applications:• arithmetic expressions• decision processes• searching
A
B C
F GD E
H I
12
![Page 13: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/13.jpg)
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
3 b
13
![Page 14: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/14.jpg)
Trees
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?
How about coffee? On expense account?
Starbucks Spike’s Al Forno Café Paragon
Yes No
Yes No Yes No
14
![Page 15: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/15.jpg)
Trees
Properties of Binary Trees
• Notationn number of nodesl number of leavesi number of internal nodesh height
• Properties:• l i 1• n 2l 1• h i• h (n 1)2• l 2h
• h log2 l
• h log2 (n 1) 1
15
![Page 16: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/16.jpg)
Trees
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)
• Update methods may be defined by data structures implementing the BinaryTree ADT
16
![Page 17: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/17.jpg)
Trees
A Linked Structure for Binary Trees• A node is represented by
an object storing• Element• Parent node• Left child node• Right child node
• Node objects implement the Position ADT
B
DA
C E
B
A D
C E
17
![Page 18: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/18.jpg)
Trees
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
Algorithm inOrder(v)if isInternal(v)
inOrder(leftChild(v))visit(v)if isInternal(v)
inOrder(rightChild(v))
3
1
2
5
6
7 9
8
4
18
![Page 19: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/19.jpg)
Trees
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.
A
B C
G HE F
I J
Algorithm inOrder(v)if isInternal(v)
inOrder(leftChild(v))visit(v)if isInternal(v)
inOrder(rightChild(v))
19
![Page 20: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/20.jpg)
Trees
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
20
![Page 21: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/21.jpg)
Trees
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
Algorithm printExpression(v)if isInternal(v)
print(“(’’)printExpression(leftChild(v))
print(v.element())if isInternal(v)
printExpression(rightChild(v))print (“)’’)
2
a 1
3 b((2 (a 1)) (3 b))
21
![Page 22: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/22.jpg)
Trees
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
Algorithm evalExpr(v)if isExternal(v)
return v.element()else
x evalExpr(leftChild(v))
y evalExpr(rightChild(v))
operator stored at vreturn x y
2
5 1
3 2
22
![Page 23: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/23.jpg)
Trees
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
23
![Page 24: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/24.jpg)
Trees
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)
2
5 1
3 2
L
B
R
24
![Page 25: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/25.jpg)
Trees
Euler Tour Traversal
Algorithm eulerTour(T,p)left-visit-action(p)if isInternal(p)
eulerTour(T,p.left()bottom-visit-action(p)if isInternal(p)
eulerTour(T,p.right())right-visit-action(p)
End Algorithm
25
2
5 1
3 2
L
B
R
![Page 26: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/26.jpg)
Trees
Print Arithmetic Expressions• Specialization of an Euler Tour
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 “)”
Algorithm printExpression(T,p)if isExternal(p) then
print value stored at pElse
print “(“printExpression(T,p.left())Print the operator stored at pprintExpression(T,p.right())
print “)”Endif
End Algorithm
2
a 1
3 b((2 (a 1)) (3 b))
26
![Page 27: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/27.jpg)
Trees
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• Recursively called on the
left and right children• A Result object with fields
leftResult, rightResult and finalResult keeps track of the output of the recursive calls to 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) {
Result r = initResult();if (tree–>isExternal(p)) { visitExternal(p, r); }else {
visitLeft(p, r);r.leftResult = eulerTour(tree–>leftChild(p));visitBelow(p, r);r.rightResult = eulerTour(tree–>rightChild(p));visitRight(p, r);return r.finalResult;
} // … other details omitted
27
![Page 28: Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures](https://reader033.vdocuments.mx/reader033/viewer/2022051620/56649eaa5503460f94baf899/html5/thumbnails/28.jpg)
Trees
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); }
// … other details omitted};
28