Copyright © Aiman Hanna All rights reserved

Slides:



Advertisements
Similar presentations
Trees and Binary Trees Become Rich Force Others to be Poor Rob Banks
Advertisements

Trees1 More on Trees University Fac. of Sci. & Eng. Bus. School Law School CS Dept. EE Dept. Math. Dept.
Data Structures Lecture 6 Fang Yu Department of Management Information Systems National Chengchi University Fall 2010.
Trees Briana B. Morrison Adapted from Alan Eugenio.
1 prepared from lecture material © 2004 Goodrich & Tamassia COMMONWEALTH OF AUSTRALIA Copyright Regulations 1969 WARNING This material.
© 2004 Goodrich, Tamassia Trees1 Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery.
© 2004 Goodrich, Tamassia Trees1 Chapter 7 Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery.
Trees1 Recursion Recursion is a concept of defining a method that makes a call to itself.
Chapter 7: Trees Objectives:
© 2004 Goodrich, Tamassia Trees1 Lecture 04 Trees Topics Trees Binary Trees Binary Search trees.
Elementary Data Structures Stacks, Queues, & Lists Amortized analysis Trees.
1 Chapter 7 Trees. 2 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.
© 2004 Goodrich, Tamassia Trees1 this is a tree. © 2004 Goodrich, Tamassia Trees2 What is a Tree? In computer science, a tree is an abstract model of.
Trees COMP53 Oct 31, What is a Tree? A tree is an abstract model of a hierarchical structure A tree consists of nodes with a parent-child relation.
Trees1 Part-C Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery.
CSC401 – Analysis of Algorithms Lecture Notes 4 Trees and Priority Queues Objectives: General Trees and ADT Properties of Trees Tree Traversals Binary.
General Trees. Tree Traversal Algorithms. Binary Trees. 2 CPSC 3200 University of Tennessee at Chattanooga – Summer 2013 © 2010 Goodrich, Tamassia.
Trees Chapter 8.
Trees.
Make Money Fast! Stock Fraud Apply shortcuts Bank Robbery Just For Laughs Trees This one is cool eITnotes.com For more notes and topics visit:
Trees CSCI 3333 Data Structures. Acknowledgement  Dr. Bun Yue  Mr. Charles Moen  Dr. Wei Ding  Ms. Krishani Abeysekera  Dr. Michael Goodrich  Dr.
Chapter 7:Trees Nancy Amato Parasol Lab, Dept. CSE, Texas A&M University Acknowledgement: These slides are adapted from slides provided with Data Structures.
Saturday, 04 Apr 2010 University of Palestine Computer Science II Trees.
Trees 4/23/2017 Trees.
© 2004 Goodrich, Tamassia Trees1 Text Book: M. T. Goodrich and R. Tamassia, "Data Structures and Algorithms in Java," 4th edition, 2006, Wiley & Sons,
Trees by Dr. Bun Yue Professor of Computer Science CSCI 3333 Data Structures.
Trees1 Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery © 2010 Goodrich, Tamassia.
Trees1 Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery © 2010 Goodrich, Tamassia.
Trees1 Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery © 2013 Goodrich, Tamassia, Goldwasser.
Trees trees binary trees traversals of trees template method pattern
CH 7. TREES ACKNOWLEDGEMENT: THESE SLIDES ARE ADAPTED FROM SLIDES PROVIDED WITH DATA STRUCTURES AND ALGORITHMS IN C++, GOODRICH, TAMASSIA AND MOUNT (WILEY.
24 January Trees CSE 2011 Winter Trees Linear access time of linked lists is prohibitive  Does there exist any simple data structure for.
CH 7 : TREE ACKNOWLEDGEMENT: THESE SLIDES ARE ADAPTED FROM SLIDES PROVIDED WITH DATA STRUCTURES AND ALGORITHMS IN C++, GOODRICH, TAMASSIA AND MOUNT (WILEY.
Trees1 Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery © 2010 Goodrich, Tamassia.
© 2004 Goodrich, Tamassia Trees1 Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery.
TREE Ahsan Ahmed College of Computer and Information Science Majma’ah University 1.
1 COMP9024: Data Structures and Algorithms Week Five: Trees Hui Wu Session 1, 2015
What is a Tree? Formally, we define a tree T as a set of nodes storing elements such that the nodes have a parent-child relationship, that satisfies the.
Elementary Data Structures
Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery
Trees 5/2/2018 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser,
Trees 5/10/2018 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M. H. Goldwasser,
Searching (and into Trees)
Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery
Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery Trees
University of Palestine
Stacks (Background) Trees.
Trees 8/7/2018 2:27 PM Binary Trees © 2010 Goodrich, Tamassia Trees.
Trees 二○一八年八月二十六日 Part-C Trees Trees.
Trees Chuan-Ming Liu Computer Science & Information Engineering
© 2013 Goodrich, Tamassia, Goldwasser
Trees 9/21/2018 9:58 PM Trees this is a tree Trees.
COSC2100: Data Structures and Algorithms
Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery
Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery
Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery
Elementary Data Structures
Copyright © Aiman Hanna All rights reserved
Chapter 2: Elementary Data Structures
Week nine-ten: Trees Trees.
Copyright © Aiman Hanna All rights reserved
Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery Trees
Trees "A tree may grow a thousand feet tall, but its leaves will return to its roots." -Chinese Proverb CLRS, Section 10.4.
Trees Palestine Gaza West Bank 48 Stolen Land Trees Trees
Lecture 8: Iterators, Trees
Copyright © Aiman Hanna All rights reserved
Lecture 9 CS2013.
CS210- Lecture 9 June 20, 2005 Announcements
Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery
Trees.
Presentation transcript:

Copyright © 2011-2016 Aiman Hanna All rights reserved Trees Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia University, Montreal, Canada These slides has been extracted, modified and updated from original slides of : Data Structures and Algorithms in Java, 5th edition. John Wiley& Sons, 2010. ISBN 978-0-470-38326-1. Data Structures and the Java Collections Framework by William J. Collins, 3rdedition, ISBN 978-0-470-48267-4. Both books are published by Wiley. Copyright © 2010-2011 Wiley Copyright © 2010 Michael T. Goodrich, Roberto Tamassia Copyright © 2011 William J. Collins Copyright © 2011-2016 Aiman Hanna All rights reserved

Coverage General Trees Tree Traversal Algorithms Binary Trees Make Money Fast! Stock Fraud Ponzi Scheme Bank Robbery General Trees Tree Traversal Algorithms Binary Trees 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 include: Organization charts File systems Programming environments Computers”R”Us Sales R&D Manufacturing Laptops Desktops US International Europe Asia Canada Trees

Tree Terminology Root: node without parent (A) Internal node: node with at least one child (A, B, C, F) External node (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, in the shown tree) Descendant of a node: child, grandchild, grand-grandchild, etc. A B D C G H E F I J K Trees

Tree Terminology siblings: Two nodes that are children of the same parent. edge: an edge of a tree is a pair of nodes (u, v), where u is the parent and v is the child, or vise versa. In other words, an edge is a connection between a parent and a child in the tree. Path: a sequence of nodes such that any two consecutive nodes in the sequence form an edge (for instance: A, B, F, J). A B D C G H E F I J K Trees

Tree Terminology Subtree: tree consisting of a node and its descendants. A B D C G H E F I J K subtree Trees

Ordered Trees A tree is ordered if there is a linear ordering defined for the children of each node. That is, with ordered trees we can identify the children of a node as being first, second, third, etc. Ordered trees typically indicate the linear order among siblings by listing them in the correct (ordered) order. Book Chapter 3 Chapter 1 Chapter 2 Section 1.1 Section 1.2 Section 2.1 Section 2.2 Section 1.2.1 Section 1.2.2 Section 1.2.3 Trees

Tree ADT We can use positions to abstract nodes. Positions of a tree are its nodes. The terms “position” and “node” is hence used interchangeably. A position object support the following method: element(): Return the object stored in the position. Generic methods: integer size(): Return the number of nodes in the tree. boolean isEmpty(): Tests whether or not the tree has nodes. Iterator iterator(): Return an iterator of all the elements stored at nodes of the tree. Iterable positions(): Return an iterable collection of all the nodes of the tree. Trees

Tree ADT Accessor methods: position root(): Return the “root” of tree; error if tree is empty. position parent(p): Return the parent of p; error if p is the root. Iterable children(p): Return an iterable collection containing all the children of node p. If the tree is ordered, then the iterable collection returned by children(p) stores the children of p in order. If p is a leaf, then the returned collection is empty. Trees

Tree ADT Query methods: Update method: boolean isInternal(p): Tests whether node p is internal . boolean isExternal(p ): Tests whether node p is external. boolean isRoot(p): Tests whether node p is the root. Update method: element replace (p, e): Replace the element at node p with e and return the original (old) element. Additional update methods may be defined by data structures implementing the Tree ADT Trees

Tree ADT Performance of the Tree ADT methods: O(1) O(n) O(cv ) Operation Complexity size, isEmpty O(1) Iterator, positions O(n) replace() root, parent children(v) O(cv ) cv denotes the number of children at node C. isInternal, isExternal, isRoot Trees

Preorder Traversal Algorithm preOrder(v) visit(v) A traversal visits the nodes of a tree in a systematic manner In a preorder traversal, the root is visited first and then subtrees rooted as its children are traversed recursively in the same manner. That is, a node is visited before its descendants. 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 Trees

Postorder Traversal Algorithm postOrder(v) for each child w of v 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 Trees

Other Traversals Preorder and Postorder traversals are common but other traversals are possible. For instance, we can visit all the nodes at depth d before visiting the ones at depth d + 1. Numbering the nodes as we visit them in such fashion is called level numbering. 1 cs16/ 4 2 3 todo.txt 1K homeworks/ programs/ 5 6 7 8 9 h1c.doc 3K h1nc.doc 2K DDR.java 10K Stocks.java 25K Robot.java 20K Trees

Binary Trees Applications: A binary tree is a tree with the following properties: Each internal node has at most two children (exactly two for proper binary trees; otherwise the tree is improper ) We call the children of an internal node left child and right child The children of a node are an ordered pair, where the left child precedes the right one A binary tree can be defined recursively as 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 D E F G H I Trees

Arithmetic Expression Tree Binary tree associated with an arithmetic expression is a proper binary tree where: internal nodes: operators external nodes: operands Example: arithmetic expression tree for the expression (2  (a - 1) + (3  b)) +  - 2 a 1 3 b Trees

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 Trees

Properties of Proper 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 = 2i + 1 h  i h  (n - 1)/2 e  2h h  log2 e h  log2 (n + 1) - 1 Trees

BinaryTree ADT The BinaryTree ADT extends the Tree ADT, i.e., it inherits all the methods of the Tree ADT Additional methods: position left(p): Return the left child of p; error if p has no left child position right(p): Return the right child of p; error if p has no right child boolean hasLeft(p): Test whether p has a left child boolean hasRight(p): Test whether p has a right child Update methods may be defined by data structures implementing the BinaryTree ADT Trees

Inorder Traversal of Binary Trees 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 hasLeft (v) inOrder (left (v)) visit(v) if hasRight (v) inOrder (right (v)) 3 1 2 5 6 7 9 8 4 Trees

Print Arithmetic Expressions Algorithm printExpression(v) if hasLeft (v) print(“(’’) inOrder (left(v)) print(v.element ()) if hasRight (v) inOrder (right(v)) print (“)’’) Specialization of an inorder traversal print operand or operator when visiting node print “(“ before traversing left subtree print “)“ after traversing right subtree Note: The above algorithm is a bit simplified one to illustrate the idea. i.e. more code is needed to have the () correctly placed since inOrder (left(v)) does not do that. Also, a call to printExpression as a recursive call may be better here. We will need to pass a tree and a node to the call in that case. +  - 2 a 1 3 b ((2  (a - 1)) + (3  b)) 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 v return x  y +  - 2 5 1 3 Trees

Euler Tour Traversal All previously discussed traversal algorithms are forms of iterators where each traversal is guaranteed to visit each node in a certain order, and exactly once. Euler Tour traversal relaxes that requirement of the single visit to each node. The advantage of such algorithms is to allow for more general kinds of algorithms to be expressed easily. In other words, it provides a generic traversal of a binary tree which includes the preorder, postorder and inorder traversals. Trees

Euler Tour Traversal +  - 2 5 1 3 Euler Tour traversals walks around the tree and visit each node three times: on the left (preorder – root  left  right) from below (inorder – left  root  right) on the right (postorder – left  right  root) If the node is external, all three visits actually happen at the same time. +  - 2 5 1 3 L B R Trees

Euler Tour Traversal Complexity of Euler Tour is easy to analyze: Assume each visit takes a constant time O(1) Since we spend a constant time at each node, the overall running time is O(n) The Euler Tour can perform other kinds of traversals as well For instance, to compute the number of descendants of a node v, we can perform the following: Start the tour by initializing a counter to 0 Record the counter when v is visited on the left, say x Record the counter when v is visited on the right, say y Number of descendants = y – x + 1 Trees

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   A D F B A D F   C E C E Trees

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   A D B A D     C E C E Trees

Performance of List Implementation of Binary Trees Operation Complexity size, isEmpty O(1) Iterator, positions O(n) replace root, parent, left, right, sibling, children children(v) O(1 ) Since there are at most two children of any node in a binary tree. hasLeft, hasRight, isInternal, isExternal, isRoot, remove, insertLeft, insertRight, attach Trees

Array-Based Representation of Binary Trees Nodes are stored in an array A 1 A A B D … G H … 2 3 1 2 3 10 11 B D Use level numbering Node v is stored at A[rank(v)] 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 E F C J 10 11 G H Trees

Performance of Array-based Implementation of Binary Trees Operation Complexity size, isEmpty O(1) Iterator, positions O(n) replace() root, parent, left, right, children children(v) O(1 ) Since there are at most two children of any node in a binary tree. hasLeft, hasRight, isInternal, isExternal, isRoot Trees

Template Method Pattern public abstract class EulerTour <E, R> { protected BinaryTree<E> tree; public abstact R execute(BinaryTree<E> T); protected void init(BinaryTree<E> T) { tree = T; } protected R eulerTour(Position<E> v) { TourResult<R> r = new TourResult<R>(); visitLeft(v, r); if (tree.hasLeft(p)) { r.left=eulerTour(tree.left(v)); } visitBelow(v, r); if (tree.hasRight(p)) { r.right=eulerTour(tree.right(v)); } return r.out; } 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) {} } Generic algorithm Implemented by abstract Java class Visit methods redefined by subclasses Template method eulerTour Recursively called on left and right children A TourResult object with fields left, right and out keeps track of the output of the recursive calls to eulerTour Trees

Specializations of EulerTour public class EvaluateExpressionTour extends 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(); } } Specialization of class EulerTour to evaluate arithmetic expressions Assumptions Nodes store ExpressionTerm objects with method getValue ExpressionVariable objects at external nodes ExpressionOperator objects at internal nodes with method setOperands(Integer, Integer) Trees