Download presentation
Presentation is loading. Please wait.
Published byRachel Brooks Modified over 6 years ago
1
Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery
2018年4月25日8时45分 Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery 2018年4月25日8时45分2018年4月25日8时45分 Trees
2
Outline and Reading Tree ADT (§2.3.1)
Trees 2018年4月25日8时45分 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 Data structures for trees (§2.3.4) Java implementation ( 2018年4月25日8时45分2018年4月25日8时45分 Trees
3
Trees 2018年4月25日8时45分 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&D Manufacturing Laptops Desktops US International Europe Asia Canada 2018年4月25日8时45分2018年4月25日8时45分 Trees
4
Tree Terminology subtree Root: node without parent (A)
Trees 2018年4月25日8时45分 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, grand-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, grand-grandchild, etc. Subtree: tree consisting of a node and its descendants A B D C G H E F I J K subtree 2018年4月25日8时45分2018年4月25日8时45分 Trees
5
Tree ADT We use positions to abstract nodes Generic methods:
Trees 2018年4月25日8时45分 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 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 2018年4月25日8时45分2018年4月25日8时45分 Trees
6
Preorder Traversal Algorithm preOrder(v) visit(v)
Trees 2018年4月25日8时45分 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 Recursive traversal algorithm Algorithm preOrder(v) visit(v) for each child w of v preorder (w) 1 Make Money Fast! 2 5 9 1. Motivations 2. Methods References 6 7 8 3 4 2.1 Stock Fraud 2.2 Ponzi Scheme 2.3 Bank Robbery 1.1 Greed 1.2 Avidity 2018年4月25日8时45分2018年4月25日8时45分 Trees
7
Postorder Traversal Algorithm postOrder(v) for each child w of v
Trees 2018年4月25日8时45分 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) 9 cs16/ 8 3 7 todo.txt 1K homeworks/ programs/ 1 2 4 5 6 h1c.doc 3K h1nc.doc 2K DDR.java 10K Stocks.java 25K Robot.java 20K 2018年4月25日8时45分2018年4月25日8时45分 Trees
8
Amortized Analysis of Tree Traversal
Trees 2018年4月25日8时45分 Amortized Analysis of Tree Traversal Time taken in preorder or postorder traversal of an n-node tree is proportional to the sum, taken over each node v in the tree, of the time needed for the recursive call for v. The call for v costs $(cv + 1), where cv is the number of children of v For the call for v, charge one cyber-dollar to v and charge one cyber-dollar to each child of v. Each node (except the root) gets charged twice: once for its own call and once for its parent’s call. Therefore, traversal time is O(n). 2018年4月25日8时45分2018年4月25日8时45分 Trees
9
Binary Trees Applications:
2018年4月25日8时45分 Binary Trees Applications: arithmetic expressions decision processes Searching (IP address lookup) 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 A B C D E F G H I 2018年4月25日8时45分2018年4月25日8时45分 Trees
10
Arithmetic Expression Tree
Trees 2018年4月25日8时45分 Arithmetic Expression Tree Binary tree associated with an arithmetic expression internal nodes: operators external nodes: operands Example: arithmetic expression tree for the expression (2 (a - 1) + (3 b)) Inorder for expression, postorder for evaluation + - 2 a 1 3 b 2018年4月25日8时45分2018年4月25日8时45分 Trees
11
Decision Tree Binary tree associated with a decision process
Trees 2018年4月25日8时45分 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? Yes No How about coffee? On expense account? Yes No Yes No Starbucks Spike’s Al Forno Café Paragon 2018年4月25日8时45分2018年4月25日8时45分 Trees
12
Properties of Binary Trees
2018年4月25日8时45分 Properties of Binary Trees Notation n number of nodes e number of external nodes i number of internal nodes h height Properties: e = i + 1 n = 2e - 1 h i h (n - 1)/2 e 2h h log2 e h log2 (n + 1) - 1 2018年4月25日8时45分2018年4月25日8时45分 Trees
13
Trees 2018年4月25日8时45分 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 2018年4月25日8时45分2018年4月25日8时45分 Trees
14
Inorder Traversal Algorithm inOrder(v) if isInternal (v)
Trees 2018年4月25日8时45分 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) inOrder (rightChild (v)) 6 2 8 1 4 7 9 3 5 2018年4月25日8时45分2018年4月25日8时45分 Trees
15
Print Arithmetic Expressions
Trees 2018年4月25日8时45分 Print Arithmetic Expressions Algorithm printExpression(v) if isInternal (v) print(“(’’) inOrder (leftChild (v)) print(v.element ()) if isInternal (v) inOrder (rightChild (v)) print (“)’’) Specialization of an inorder traversal print operand or operator when visiting node print “(“ before traversing left subtree print “)“ after traversing right subtree + - 2 a 1 3 b ((2 (a - 1)) + (3 b)) 2018年4月25日8时45分2018年4月25日8时45分 Trees
16
Evaluate Arithmetic Expressions
Trees 2018年4月25日8时45分 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 v return x y + - 2 5 1 3 2018年4月25日8时45分2018年4月25日8时45分 Trees
17
Euler Tour Traversal + 2 - 3 2 5 1
Trees 2018年4月25日8时45分 Euler Tour Traversal Generic traversal of a binary tree Includes special cases of 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 2 - 3 2 5 1 2018年4月25日8时45分2018年4月25日8时45分 Trees
18
Template Method Pattern
Trees 2018年4月25日8时45分 Template Method Pattern Generic algorithm that can be specialized by redefining certain steps Implemented by means of an abstract Java 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 public abstract class EulerTour { protected BinaryTree tree; protected void visitExternal(Position p, Result r) { } protected void visitLeft(Position p, Result r) { } protected void visitBelow(Position p, Result r) { } protected void visitRight(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; } … 2018年4月25日8时45分2018年4月25日8时45分 Trees
19
Specializations of EulerTour
Trees 2018年4月25日8时45分 Specializations of EulerTour We show how to specialize class EulerTour to evaluate an arithmetic expression Assumptions External nodes store Integer objects Internal nodes store Operator objects supporting method operation (Integer, Integer) public class EvaluateExpression extends EulerTour { protected void visitExternal(Position p, Result r) { r.finalResult = (Integer) p.element(); } protected void visitRight(Position p, Result r) { Operator op = (Operator) p.element(); r.finalResult = op.operation( (Integer) r.leftResult, (Integer) r.rightResult ); } … } 2018年4月25日8时45分2018年4月25日8时45分 Trees
20
Data Structure for Trees
2018年4月25日8时45分 Data Structure for Trees A node is represented by an object storing Element Parent node Sequence of children nodes Node objects implement the Position ADT B A D F B A D F C E C E 2018年4月25日8时45分2018年4月25日8时45分 Trees
21
Data Structure for Binary Trees
2018年4月25日8时45分 Data 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 A D B A D C E C E 2018年4月25日8时45分2018年4月25日8时45分 Trees
22
Array-Based Representation of Binary Trees
2018年4月25日8时45分 nodes are stored in an array 1 A H G F E D C B J … 2 3 let rank(node) be defined as follows: rank(root) = 1 if node is the left child of parent(node), rank(node) = 2*rank(parent(node)) if node is the right child of parent(node), rank(node) = 2*rank(parent(node))+1 4 5 6 7 10 11 2018年4月25日8时45分2018年4月25日8时45分 Trees
23
removeAboveExternal(w)
Trees 2018年4月25日8时45分 Java Implementation 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) expandExternal(v) v A v A removeAboveExternal(w) A C B B w 2018年4月25日8时45分2018年4月25日8时45分 Trees
24
InspectableBinaryTree
Trees 2018年4月25日8时45分 Trees in JDSL 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 InspectableTree Tree InspectableBinaryTree BinaryTree 2018年4月25日8时45分2018年4月25日8时45分 Trees
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.