Trees Make Money Fast! Bank Robbery Stock Fraud Ponzi Scheme Outline and Reading Tree ADT ( §2.3.1 ) Preorder and postorder traversals ( §2.3.2 ) BinaryTree ADT ( §2.3.3 ) Inorder traversal ( §2.3.3 ) Euler Tour traversal ( §2.3.3 ) Template method pattern
Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.
Trees
Make Money Fast!
BankRobbery
StockFraud
PonziScheme
Trees
Trees
Computers”R”Us
Sales
Manufacturing
R&D
US
International
Laptops
Desktops
Europe
Asia
Canada
Trees
A
C
D
B
E
G
H
F
K
I
J
subtree
Trees
Trees
AlgorithmpreOrder(v)
visit(v)
foreachchild w of v
preorder (w)
1
Make Money Fast!
2
5
9
1. Motivations
2. Methods
References
6
7
8
3
4
2.3 BankRobbery
2.1 StockFraud
2.2 PonziScheme
1.1 Greed
1.2 Avidity
Trees
AlgorithmpostOrder(v)
foreachchild w of v
postOrder (w)
visit(v)
9
cs16/
8
3
7
todo.txt1K
homeworks/
programs/
4
5
6
1
2
Robot.java20K
h1c.doc3K
h1nc.doc2K
DDR.java10K
Stocks.java25K
Trees
A
C
B
D
E
F
G
I
H
Trees
+
2

3
b
a
1
Trees
Want a fast meal?
No
Yes
How about coffee?
On expense account?
Yes
No
Yes
No
Starbucks
Spike’s
Al Forno
Café Paragon
Trees
nnumber of nodes
enumber of external nodes
inumber of internal nodes
hheight
Trees
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
Trees
AlgorithminOrder(v)
ifisInternal (v)
inOrder (leftChild (v))
visit(v)
ifisInternal (v)
inOrder (rightChild (v))
6
2
8
1
4
7
9
3
5
Trees
+
2

3
b
a
1
AlgorithmprintExpression(v)
ifisInternal (v)print(“(’’)
inOrder (leftChild (v))
print(v.element ())
ifisInternal (v)
inOrder (rightChild (v))
print (“)’’)
((2 (a  1)) + (3 b))
Trees
+
2

3
2
5
1
AlgorithmevalExpr(v)
ifisExternal (v)
returnv.element ()
else
x evalExpr(leftChild (v))
y evalExpr(rightChild (v))
operator stored at v
returnx y
Trees
+
L
R
B
2

3
2
5
1
Trees
public abstract class EulerTour{protected BinaryTree tree;protected voidvisitExternal(Position p, Result r) { }protected voidvisitLeft(Position p, Result r) { }protected voidvisitBelow(Position p, Result r) { }protected voidvisitRight(Position p, Result r) { }protected Object eulerTour(Position p) { Result r = new Result();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; } …
Trees
public class EvaluateExpressionextends EulerTour{
protected voidvisitExternal(Position p, Result r) {r.finalResult = (Integer) p.element(); }
protected voidvisitRight(Position p, Result r) {Operator op = (Operator) p.element();r.finalResult = op.operation((Integer) r.leftResult,(Integer) r.rightResult); }
…
}
operation (Integer, Integer)
Trees
B
A
D
F
B
A
D
F
C
E
C
E
Trees
D
C
A
B
E
B
A
D
C
E
Trees
Tree interface
BinaryTree interface extending Tree
Classes implementing Tree and BinaryTree and providing
Constructors
Update methods
Print methods
Examples of updates for binary trees
expandExternal(v)
removeAboveExternal(w)
v
expandExternal(v)
A
A
removeAboveExternal(w)
A
B
B
C
v
w
Trees
JDSL is the Library of Data Structures in Java
Tree interfaces in JDSL
InspectableBinaryTree
InspectableTree
BinaryTree
Tree
Inspectable versions of the interfaces do not have update methods
Tree classes in JDSL
NodeBinaryTree
NodeTree
JDSL was developed at Brown’s Center for Geometric Computing
See the JDSL documentation and tutorials at http://jdsl.org
InspectableTree
Tree
InspectableBinaryTree
BinaryTree
Trees