Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006...

22
02/06/2006 Trees 1 Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery

Transcript of Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006...

Page 1: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

02/06/2006 Trees 1

Trees

Make Money Fast!

StockFraud

PonziScheme

BankRobbery

Page 2: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 2

Outline and Reading

Tree ADT (§7.1.2)Preorder and postorder traversals (§7.2.2-3)BinaryTree ADT (§7.3.1)Inorder traversal (§7.3.6)Euler Tour traversal (§7.3.6)Template method pattern (§7.3.7)Data structures for trees (§7.3.4-5)

Page 3: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 3

What is a TreeIn computer science, a tree is an abstract model of a hierarchical structureA tree consists of nodes with a parent-child relationApplications:

Organization chartsFile systemsProgramming environments

Computers”R”Us

Sales R&DManufacturing

Laptops DesktopsUS International

Europe Asia Canada

Page 4: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 4

subtree

Tree TerminologyRoot: 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, grand-grandparent, etc.Depth of a node: number of ancestorsHeight of a tree: maximum depth of any node (3)Descendant of a node: child, grandchild, grand-grandchild, etc.

Subtree: tree consisting of a node and its descendants

A

B DC

G HE F

I J K

Page 5: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 5

Tree ADTWe use positions to abstract nodesGeneric 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 isExternal(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

Page 6: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 6

Preorder TraversalA traversal visits the nodes of a tree in a systematic mannerIn a preorder traversal, a node is visited before its descendantsApplication: print a structured document (like the cs16 book)

Make Money Fast!

1. Motivations References2. Methods

2.1 StockFraud

2.2 PonziScheme1.1 Greed 1.2 Avidity 2.3 Bank

Robbery

1

2

3

5

4 6 7 8

9

Algorithm preOrder(v)visit(v)for each child w of v

preorder (w)

Page 7: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 7

Postorder TraversalIn a postorder traversal, a node is visited after its descendantsApplication: 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

Page 8: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 8

Binary TreeA binary tree is a tree with the following properties:

Each internal node has two childrenThe children of a node are an ordered pair

We call the children of an internal node left child and right childAlternative recursive definition: a binary tree is either

a tree consisting of a single node, ora tree whose root has an ordered pair of children, each of which is a binary tree

Applications:arithmetic expressionsdecision processessearching

A

B C

F GD E

H I

Page 9: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 9

Arithmetic Expression TreeBinary tree associated with an arithmetic expression

internal nodes: operatorsexternal nodes: operands

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

+

××

−2

a 1

3 b

Page 10: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 10

Decision TreeBinary tree associated with a decision process

internal nodes: questions with yes/no answerexternal nodes: 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

Page 11: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 11

Properties of Binary TreesNotationn number of nodese number of

external nodesi number of internal

nodesh height

Properties:e = i + 1n = 2e − 1h ≤ ih ≤ (n − 1)/2e ≤ 2h

h ≥ log2 eh ≥ log2 (n + 1) − 1

Page 12: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 12

BinaryTree ADT

The BinaryTree ADT extends the Tree ADT, i.e., it inherits all the methods of the Tree ADTAdditional methods:

position leftChild(p)position rightChild(p)position sibling(p)

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

Page 13: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 13

Inorder TraversalIn an inorder traversal a node is visited after its left subtree and before its right subtreeApplication: draw a binary tree

x(v) = inorder rank of vy(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

Page 14: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 14

Print Arithmetic ExpressionsSpecialization of an inorder traversal

print operand or operator when visiting nodeprint “(“ before traversing left subtreeprint “)“ after traversing right subtree

Algorithm printExpression(v)if isInternal (v)

print(“(’’)inOrder (leftChild (v))

print(v.element ())if isInternal (v)

inOrder (rightChild (v))print (“)’’)

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

+

××

−2

a 1

3 b

Page 15: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 15

Evaluate Arithmetic ExpressionsSpecialization of a postorder traversal

recursive method returning the value of a subtreewhen 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

Page 16: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 16

Euler Tour TraversalGeneric traversal of a binary treeIncludes as special cases the preorder, postorder and inorder traversalsWalk 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

LB

Page 17: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 17

Template Method PatternGeneric algorithm that can be specialized by redefining certain stepsImplemented by means of an abstract Java class Visit methods that can be redefined by subclassesTemplate method eulerTour

Recursively called on the left and right childrenA Result object with fields leftResult, rightResult andfinalResult keeps track of the output of the recursive calls to eulerTour

public abstract class EulerTour<E,R> {protected BinaryTree<E> tree;public abstract R execute(BinaryTree<E> t);protected void init(BinaryTree<E> t){ tree = t;} protected void visitLeft(Position<E> v, TourResult<R> r) { }protected void visitBelow(Position<E> v, TourResult<R> r){ } protected void visitRight(Position<E> v, TourResult<R> r) { }protected E eulerTour(Position<E> v) {

TourResult<R> r = new TourResult<R>( );visitLeft(v,r) ;if (tree.hasLeft(v))

r.left=eulerTour(tree.left(v));visitBelow(v, r);if (tree.hasRight(v))

r.left=eulerTour(tree.right(v));visitRight(v, r);

return r.out; } …

Page 18: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 18

Specializations of EulerTourWe show how to specialize class EulerTour to evaluate an arithmetic expressionAssumptions

External nodes store Integer objectsInternal nodes store ExpressionOperatorobjects supporting method setOperands(Integer, Integer) and getValue()

public class EvaluateExpressionTourextends EulerTour<ExpressionTerm,Integer> {

public Integer execute(BinaryTree<ExpressionTerm> T){ init(T);return eulerTour(tree.root());

}protected void visitRight(Position<ExpressionTerm> v,

TourResult<Integer> r) {ExpressionTerm term = v.element();if (tree.isInternal(v)){

ExpressionOperator op = (ExpressionOperator) term;op.setOperands(r.left, r.right);

}r.out = term.getValue();}

}…

Page 19: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 19

Data Structure for TreesA node is represented by an object storing

ElementParent nodeSequence of children nodes

Node objects implement the Position ADT

B

∅ ∅

A D F

∅C

∅E

B

DA

C E

F

Page 20: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 20

Data Structure for Binary TreesA node is represented by an object storing

ElementParent nodeLeft child nodeRight child node

Node objects implement the Position ADT

E

∅ ∅

∅ ∅ ∅ ∅

B

A D

C E

B

DA

C

Page 21: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 21

Java ImplementationTree interfaceBinaryTree interface extending TreeClasses implementing Tree and BinaryTree and providing

ConstructorsUpdate methodsPrint methods

Examples of updates for binary trees

expandExternal(v)removeAboveExternal(w)

A

∅ ∅

expandExternal(v)

A

CB

B

removeAboveExternal(w)

Av v

w

Page 22: Trees - Brown Universitycs.brown.edu/courses/cs016/2010/Resource/old_lectures/Trees.pdf · 2/6/2006 Trees 8 Binary Tree A binary tree is a tree with the following properties: Each

2/6/2006 Trees 22

Trees in net.datastructuresNDS4 is the Library of Data Structures in JavaTree interfaces in NDS4

CompleteBinaryTreeBinaryTreeTree

Tree classes in JDSLLinkedBinaryTreeArrayListCompleteBinaryTreeAVLTreeBinarySearchTreeLinkedTreeRBTree

NDS4 was developed at Brown and UC IrvineSee the JDSL documentation and tutorials at http://net3.datastructures.net/doc4/index.html

LinkedTree

LinkedBinaryTree

Tree

BinaryTree