the pointer range [first, last) into the tree
|
|
- Adelia Stanley
- 6 years ago
- Views:
Transcription
1 1 #ifndef BINARY_SEARCH_TREE_CLASS 2 #define BINARY_SEARCH_TREE_CLASS 3 4 #ifndef NULL 5 #include <cstddef> 6 #endif // NULL 7 8 #include <iomanip> // for setw() 9 #include <strstream> // for format conversion 10 #include <string> // node data formatted as a string 11 #include <queue> 12 #include <utility> // pair class #include "d_except.h" // exception classes using namespace std; // declares a binary search tree node object 19 template <typename T> 20 class stnode { 21 public: 22 // stnode is used to implement the binary search tree class 23 // making the data public simplifies building the class functions T nodevalue; // node data 26 stnode<t> *left, *right, *parent; // child pointers and pointer to the node s parent // constructor 29 stnode (const T& item, stnode<t> *lptr = NULL, stnode<t> *rptr = NULL, stnode<t> *pptr = NULL): nodevalue(item), left(lptr), right(rptr), parent(pptr) {} 30 }; template <typename T> 33 class stree { 34 public: // include the iterator nested classes 37 #include "d_stiter.h" stree(); // constructor. initialize root to NULL and size to 0 40 stree(t *first, T *last); // constructor. insert the elements from the pointer range [first, last) into the tree 41 stree(const stree<t>& tree); // copy constructor 42 ~stree(); // destructor 1
2 43 stree<t>& operator= (const stree<t>& rhs); // assignment operator iterator find(const T& item); // search for item. if found, return an iterator pointing at it in the tree; otherwise, return end() 46 const_iterator find(const T& item) const; // constant version int empty() const; // indicate whether the tree is empty 49 int size() const; // return the number of data items in the tree pair<iterator, bool> insert(const T& item); 52 // if item is not in the tree, insert it and return a pair whose iterator component points at item and whose bool component is true. if item is in the tree, return a pair whose iterator component points at the existing item and whose bool component is false 53 // Postcondition: the tree size increases by 1 if item is not in the tree void erase(iterator pos); 56 // erase the item pointed to by pos. Preconditions: the tree is not empty and pos points to an item in the tree. if the tree is empty, the function throws the underflowerror exception. if the iterator is invalid, the function throws the referenceerror exception. Postcondition: the tree size decreases by iterator begin(); // return an iterator pointing to the first item inorder 59 iterator end(); // return an iterator pointing just past the end of the tree data private: 62 stnode<t> *root; // pointer to tree root 63 int treesize; // number of elements in the tree stnode<t> *getstnode(const T& item, stnode<t> *lptr,stnode<t> *rptr, stnode<t> *pptr); 66 // allocate a new tree node and return a pointer to it. if memory allocation fails, the function throws the memoryallocationerror exception stnode<t> *copytree(stnode<t> *t); 69 // recursive function used by copy constructor and assignment operator to assign the current tree as a copy of another tree void deletetree(stnode<t> *t); 72 // recursive function used by destructor and assignment operator 2
3 73 to delete all the nodes in the tree 74 stnode<t> *findnode(const T& item) const; 75 // search for item in the tree. if it is in the tree, return a pointer to its node; otherwise, return NULL. used by find() and erase() }; template <typename T> 80 stnode<t> *stree<t>::getstnode(const T& item, 81 stnode<t> *lptr,stnode<t> *rptr, stnode<t> *pptr) { 82 stnode<t> *newnode; // initialize the data and all pointers 85 newnode = new stnode<t> (item, lptr, rptr, pptr); 86 if (newnode == NULL) throw memoryallocationerror("stree: memory allocation failure"); return newnode; 89 } template <typename T> 92 stnode<t> *stree<t>::copytree(stnode<t> *t) { 93 stnode<t> *newlptr, *newrptr, *newnode; // if tree branch NULL, return NULL 96 if (t == NULL) return NULL; // copy the left branch of root t and assign its root to newlptr 99 newlptr = copytree(t->left); // copy the right branch of tree t and assign its root to newrptr 102 newrptr = copytree(t->right); // allocate storage for the current root node, assign its value and pointers to its left and right subtrees. the parent pointer of newnode is assigned when newnode s parent is created. if newnode is root, NULL is the correct value for its parent pointer 105 newnode = getstnode(t->nodevalue, newlptr, newrptr, NULL); // the current node is the parent of any subtree that is not empty 108 if (newlptr!= NULL) newlptr->parent = newnode; 109 if (newrptr!= NULL) newrptr->parent = newnode; return newnode; 3
4 112 } // delete the tree stored by the current object 115 template <typename T> 116 void stree<t>::deletetree(stnode<t> *t) { 117 // if current root node is not NULL, delete its left subtree, its right subtree and then the node itself 118 if (t!= NULL) { 119 deletetree(t->left); 120 deletetree(t->right); 121 delete t; 122 } 123 } // search for data item in the tree. if found, return its node address; otherwise, return NULL 126 template <typename T> 127 stnode<t> *stree<t>::findnode(const T& item) const { 128 // cycle t through the tree starting with root 129 stnode<t> *t = root; // terminate on on empty subtree 132 while(t!= NULL &&!(item == t->nodevalue)) 133 if (item < t->nodevalue) t = t->left; 134 else t = t->right; // return pointer to node; NULL if not found 137 return t; 138 } template <typename T> 141 stree<t>::stree(): root(null),treesize(0) {} template <typename T> 144 stree<t>::stree(t *first, T *last): root(null),treesize(0) { 145 T *p = first; // insert each item in [first, last) into the tree 148 while (p!= last) { 149 insert(*p); 150 p++; 151 } 152 } template <typename T> 155 stree<t>::stree(const stree<t>& tree): treesize(tree.treesize) { 4
5 156 root = copytree(tree.root); // copy tree to the current object 157 } template <typename T> 160 stree<t>::~stree() { 161 // erase the tree nodes from memory 162 deletetree(root); 163 } template <typename T> 166 stree<t>& stree<t>::operator= (const stree<t>& rhs) { 167 if (this == &rhs) // can t copy a tree to itself 168 return *this; deletetree(root); // erase the existing tree nodes from memory 171 root = copytree(rhs.root); // copy tree rhs into current object 172 treesize = rhs.treesize; // set the tree size return *this; // return reference to current object 175 } template <typename T> 178 stree<t>::iterator stree<t>::find(const T& item) { 179 stnode<t> *curr = findnode (item); // search tree for item // if item found, return iterator with value current; otherwise, return end() 182 if (curr!= NULL) return iterator(curr, this); 183 else return end(); 184 } template <typename T> 187 int stree<t>::empty() const { return root == NULL; } template <typename T> 190 int stree<t>::size() const { return treesize; } template <typename T> 193 pair<stree<t>::iterator, bool> stree<t>::insert(const T& item) { 194 // t is current node in traversal, parent the previous node 195 stnode<t> *t = root, *parent = NULL, *newnode; // terminate on on empty subtree 198 while(t!= NULL) { 199 // update the parent pointer. then go left or right 200 parent = t; 5
6 201 // if a match occurs, return a pair whose iterator component points at item in the tree and whose bool component is false 202 if (item == t->nodevalue) 203 return pair<iterator, bool> (iterator(t, this), false); 204 else if (item < t->nodevalue) 205 t = t->left; 206 else 207 t = t->right; 208 } // create the new leaf node 211 newnode = getstnode(item,null,null,parent); // if parent is NULL, insert as root node 214 if (parent == NULL) 215 root = newnode; 216 else if (item < parent->nodevalue) 217 // insert as left child 218 parent->left = newnode; 219 else 220 // insert as right child 221 parent->right = newnode; // increment size 224 treesize++; // return a pair whose iterator component points at the new node and whose bool component is true 227 return pair<iterator, bool> (iterator(newnode, this), true); 228 } template <typename T> 231 void stree<t>::erase(iterator pos) { 232 // dnodeptr = pointer to node D that is deleted 233 // pnodeptr = pointer to parent P of node D 234 // rnodeptr = pointer to node R that replaces D 235 stnode<t> *dnodeptr = pos.nodeptr, *pnodeptr, *rnodeptr; if (treesize == 0) throw underflowerror("stree erase(): tree is empty"); 238 if (dnodeptr == NULL) throw referenceerror("stree erase(): invalid iterator"); // assign pnodeptr the address of P 241 pnodeptr = dnodeptr->parent; // If D has a NULL pointer, the replacement node is the other child 6
7 244 if (dnodeptr->left == NULL dnodeptr->right == NULL) { 245 if (dnodeptr->right == NULL) rnodeptr = dnodeptr->left; 246 else rnodeptr = dnodeptr->right; if (rnodeptr!= NULL) // the parent of R is now the parent of D 249 rnodeptr->parent = pnodeptr; 250 } 251 else { // both pointers of dnodeptr are non-null 252 // find and unlink replacement node for D. starting at the right child of node D, find the node whose value is the smallest of all nodes whose values are greater than the value in D. unlink the node from the tree. 253 stnode<t> *pofrnodeptr = dnodeptr; // pofrnodeptr = pointer to parent of replacement node 254 rnodeptr = dnodeptr->right; // first possible replacement is right child of D // descend down left subtree of the right child of D, keeping a record of current node and its parent. when we stop, we have found the replacement 257 while(rnodeptr->left!= NULL) { 258 pofrnodeptr = rnodeptr; 259 rnodeptr = rnodeptr->left; 260 } if (pofrnodeptr == dnodeptr) { 263 // right child of deleted node is the replacement. 264 // assign left subtree of D to left subtree of R 265 rnodeptr->left = dnodeptr->left; 266 // assign the parent of D as the parent of R 267 rnodeptr->parent = pnodeptr; 268 // assign the left child of D to have parent R 269 dnodeptr->left->parent = rnodeptr; 270 } 271 else { 272 // we moved at least one node down a left branch of the right child of D. unlink R from tree by assigning its right subtree as the left child of the parent of R 273 pofrnodeptr->left = rnodeptr->right; // the parent of the right child of R is the parent of R 276 if (rnodeptr->right!= NULL) 277 rnodeptr->right->parent = pofrnodeptr; // put replacement node in place of dnodeptr. assign children of R to be those of D 7
8 280 rnodeptr->left = dnodeptr->left; 281 rnodeptr->right = dnodeptr->right; 282 // assign the parent of R to be the parent of D 283 rnodeptr->parent = pnodeptr; 284 // assign the parent pointer in the children of R to point at R 285 rnodeptr->left->parent = rnodeptr; 286 rnodeptr->right->parent = rnodeptr; 287 } 288 } // complete the link to the parent node. 291 // deleting the root node. assign new root 292 if (pnodeptr == NULL) 293 root = rnodeptr; 294 // attach R to the correct branch of P 295 else if (dnodeptr->nodevalue < pnodeptr->nodevalue) 296 pnodeptr->left = rnodeptr; 297 else 298 pnodeptr->right = rnodeptr; // delete the node from memory and decrement tree size 301 delete dnodeptr; 302 treesize--; 303 } template <typename T> 306 stree<t>::iterator stree<t>::begin() { 307 stnode<t> *curr = root; // if the tree is not empty, the first node inorder is the farthest node left from root 310 if (curr!= NULL) 311 while (curr->left!= NULL) 312 curr = curr->left; // build return value using private constructor 315 return iterator(curr, this); 316 } template <typename T> 319 stree<t>::iterator stree<t>::end() { 320 // end indicated by an iterator with NULL stnode pointer 321 return iterator(null, this); 322 } #endif // BINARY_SEARCH_TREE_CLASS 8
Advanced Data Structures and Algorithms
Advanced Data Structures and Algorithms CS 361 - Fall 2013 Lec. #07: Trees & Binary Search Trees Tamer Nadeem Dept. of Computer Science Class Objective/Overview Familiarize with Trees and Related Terminologies
More informationBinary Search Trees. Contents. Steven J. Zeil. July 11, Definition: Binary Search Trees The Binary Search Tree ADT...
Steven J. Zeil July 11, 2013 Contents 1 Definition: Binary Search Trees 2 1.1 The Binary Search Tree ADT.................................................... 3 2 Implementing Binary Search Trees 7 2.1 Searching
More informationTraversing Trees with Iterators
Steven J. Zeil June 25, 2013 Contents 1 Iterating over Trees 3 1.1 begin()................................................................ 5 1.2 operator++..............................................................
More informationTraversing Trees with Iterators
Steven J. Zeil June 25, 2013 Contents 1 Iterating over Trees 4 1.1 begin()..................................... 6 1.2 operator++................................... 7 2 Iterators using Parent Pointers 11
More informationTutorial AVL TREES. arra[5] = {1,2,3,4,5} arrb[8] = {20,30,80,40,10,60,50,70} FIGURE 1 Equivalent Binary Search and AVL Trees. arra = {1, 2, 3, 4, 5}
1 Tutorial AVL TREES Binary search trees are designed for efficient access to data. In some cases, however, a binary search tree is degenerate or "almost degenerate" with most of the n elements descending
More informationChapter 20: Binary Trees
Chapter 20: Binary Trees 20.1 Definition and Application of Binary Trees Definition and Application of Binary Trees Binary tree: a nonlinear linked list in which each node may point to 0, 1, or two other
More informationTitle Description Participants Textbook
Podcast Ch18d Title: Binary Search Tree Iterator Description: Additional operations first and last; the BST iterator Participants: Barry Kurtz (instructor); John Helfert and Tobie Williams (students) Textbook:
More informationCSCI-1200 Data Structures Fall 2017 Lecture 17 Trees, Part I
Review from Lecture 16 CSCI-1200 Data Structures Fall 2017 Lecture 17 Trees, Part I Maps containing more complicated values. Example: index mapping words to the text line numbers on which they appear.
More informationB-Trees. nodes with many children a type node a class for B-trees. an elaborate example the insertion algorithm removing elements
B-Trees 1 B-Trees nodes with many children a type node a class for B-trees 2 manipulating a B-tree an elaborate example the insertion algorithm removing elements MCS 360 Lecture 35 Introduction to Data
More informationChapter 17: Linked Lists
Chapter 17: Linked Lists 17.1 Introduction to the Linked List ADT Introduction to the Linked List ADT Linked list: set of data structures (nodes) that contain references to other data structures list head
More informationCSCI-1200 Data Structures Spring 2015 Lecture 18 Trees, Part I
CSCI-1200 Data Structures Spring 2015 Lecture 18 Trees, Part I Review from Lectures 17 Maps containing more complicated values. Example: index mapping words to the text line numbers on which they appear.
More informationCSCI-1200 Data Structures Spring 2018 Lecture 16 Trees, Part I
CSCI-1200 Data Structures Spring 2018 Lecture 16 Trees, Part I Review from Lecture 15 Maps containing more complicated values. Example: index mapping words to the text line numbers on which they appear.
More informationChapter 12: Searching: Binary Trees and Hash Tables. Exercises 12.1
Chapter 12: Searching: Binary Trees and Hash Tables Exercises 12.1 1. 4, 6 2. 4, 1, 2, 3 3. 4, 6, 5 4. 4, 1, 0 5. 4, 6, 7, 8 6. template linearsearch(elementtype x[], ElementType
More informationTitle Description Participants Textbook
Podcast Ch18c Title: BST delete operation Description: Deleting a leaf; deleting a node with one nonnull child; deleting a node with two nonnull children Participants: Barry Kurtz (instructor); John Helfert
More informationChapter 17: Linked Lists
Chapter 17: Linked Lists Copyright 2009 Pearson Education, Inc. Copyright Publishing as Pearson 2009 Pearson Addison-Wesley Education, Inc. Publishing as Pearson Addison-Wesley 17.1 Introduction to the
More informationTrees, Binary Trees, and Binary Search Trees
COMP171 Trees, Binary Trees, and Binary Search Trees 2 Trees Linear access time of linked lists is prohibitive Does there exist any simple data structure for which the running time of most operations (search,
More informationselectors, methodsinsert() andto_string() the depth of a tree and a membership function
Binary Search Trees 1 Sorting Numbers using a Tree a sorting algorithm using a tree of integer numbers 2 Header Files defining a node struct defining a tree class 3 Definition of Methods selectors, methodsinsert()
More informationExpression Trees and the Heap
Expression Trees and the Heap 1 Binary Expression Trees evaluating expressions splitting strings in operators and operands 2 C++ Binary Tree of Strings header files defining the methods 3 the Heap or Priority
More informationCSCI Trees. Mark Redekopp David Kempe
CSCI 104 2-3 Trees Mark Redekopp David Kempe Trees & Maps/Sets C++ STL "maps" and "sets" use binary search trees internally to store their keys (and values) that can grow or contract as needed This allows
More informationAdvanced Java Concepts Unit 5: Trees. Notes and Exercises
Advanced Java Concepts Unit 5: Trees. Notes and Exercises A Tree is a data structure like the figure shown below. We don t usually care about unordered trees but that s where we ll start. Later we will
More informationvoid insert( Type const & ) void push_front( Type const & )
6.1 Binary Search Trees A binary search tree is a data structure that can be used for storing sorted data. We will begin by discussing an Abstract Sorted List or Sorted List ADT and then proceed to describe
More informationTrees. Chapter 6. strings. 3 Both position and Enumerator are similar in concept to C++ iterators, although the details are quite different.
Chapter 6 Trees In a hash table, the items are not stored in any particular order in the table. This is fine for implementing Sets and Maps, since for those abstract data types, the only thing that matters
More informationBinary Tree. Binary tree terminology. Binary tree terminology Definition and Applications of Binary Trees
Binary Tree (Chapter 0. Starting Out with C++: From Control structures through Objects, Tony Gaddis) Le Thanh Huong School of Information and Communication Technology Hanoi University of Technology 11.1
More information2. (5 Points) When calculating a combination (n choose k) the recursive definition is n k =1 if
COSC 320 Exam 1 Key Spring 2011 Part 1: Recursion 1. (5 Points) Write a recursive function for calculating the factorial of a non-negative integer. long factorial(long n) if (n == 0) else return n * factorial(n-1);
More information! Tree: set of nodes and directed edges. ! Parent: source node of directed edge. ! Child: terminal node of directed edge
Trees & Heaps Week 12 Gaddis: 20 Weiss: 21.1-3 CS 5301 Fall 2018 Jill Seaman!1 Tree: non-recursive definition! Tree: set of nodes and directed edges - root: one node is distinguished as the root - Every
More informationBinary Trees. For example: Jargon: General Binary Trees. root node. level: internal node. edge. leaf node. Data Structures & File Management
Binary Trees 1 A binary tree is either empty, or it consists of a node called the root together with two binary trees called the left subtree and the right subtree of the root, which are disjoint from
More informationBinary Tree Node Relationships. Binary Trees. Quick Application: Expression Trees. Traversals
Binary Trees 1 Binary Tree Node Relationships 2 A binary tree is either empty, or it consists of a node called the root together with two binary trees called the left subtree and the right subtree of the
More informationMotivation for Templates
Motivation for You want both: a list of Location objects a list of MazeMonster objects 1 How can you accomplish this by writing one LinkedList class? state all the ways you can think of doing this state
More informationITI Introduction to Computing II
ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Binary search tree (part I) Version of March 24, 2013 Abstract These lecture notes are meant
More informationCSCI-1200 Data Structures Fall 2017 Lecture 18 Trees, Part II
CSCI-1200 Data Structures Fall 2017 Lecture 18 Trees, Part II Review from Lecture 17 and Lab 9 Binary Trees, Binary Search Trees, & Balanced Trees STL set container class (like STL map, but without the
More informationITI Introduction to Computing II
ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Binary search tree (part I) Version of March 24, 2013 Abstract These lecture notes are meant
More information! Tree: set of nodes and directed edges. ! Parent: source node of directed edge. ! Child: terminal node of directed edge
Trees (& Heaps) Week 12 Gaddis: 20 Weiss: 21.1-3 CS 5301 Spring 2015 Jill Seaman 1 Tree: non-recursive definition! Tree: set of nodes and directed edges - root: one node is distinguished as the root -
More informationSCJ2013 Data Structure & Algorithms. Binary Search Tree. Nor Bahiah Hj Ahmad
SCJ2013 Data Structure & Algorithms Binary Search Tree Nor Bahiah Hj Ahmad Binary Search Tree A binary search tree has the following properties: For every node n in the tree Value of n is greater than
More informationCMSC 341 Lecture 10 Binary Search Trees
CMSC 341 Lecture 10 Binary Search Trees John Park Based on slides from previous iterations of this course Review: Tree Traversals 2 Traversal Preorder, Inorder, Postorder H X M A K B E N Y L G W UMBC CMSC
More informationCS302 - Data Structures using C++
CS302 - Data Structures using C++ Topic: Implementation Kostas Alexis s Definition: A (BST) is a binary tree where each node has a Comparable key (and an associated value) and satisfies the restriction
More informationPriority Queues and Huffman Trees
Priority Queues and Huffman Trees 1 the Heap storing the heap with a vector deleting from the heap 2 Binary Search Trees sorting integer numbers deleting from a binary search tree 3 Huffman Trees encoding
More informationSETS AND MAPS. Chapter 9
SETS AND MAPS Chapter 9 The set Functions Required methods: testing set membership (find) testing for an empty set (empty) determining set size (size) creating an iterator over the set (begin, end) adding
More informationCSCE 110 PROGRAMMING FUNDAMENTALS
CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 15. Dictionaries (1): A Key Table Class Prof. amr Goneid, AUC 1 Dictionaries(1): A Key Table Class Prof. Amr Goneid, AUC 2 A Key Table
More informationThis examination has 11 pages. Check that you have a complete paper.
MARKING KEY The University of British Columbia MARKING KEY Computer Science 252 2nd Midterm Exam 6:30 PM, Monday, November 8, 2004 Instructors: K. Booth & N. Hutchinson Time: 90 minutes Total marks: 90
More informationTrees can be used to store entire records from a database, serving as an in-memory representation of the collection of records in a file.
Large Trees 1 Trees can be used to store entire records from a database, serving as an in-memory representation of the collection of records in a file. Trees can also be used to store indices of the collection
More informationUNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering. Program 10 EECE.3220 Data Structures Fall 2017.
UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering Program 10 EECE.3220 Data Structures Fall 2017 Hash Tables Program 10 is a repeat of Program 9, but in Program 10 the
More informationBST Implementation. Data Structures. Lecture 4 Binary search trees (BST) Dr. Mahmoud Attia Sakr University of Ain Shams
Lecture 4 Binary search trees (BST) Dr. Mahmoud Attia Sakr mahmoud.sakr@cis.asu.edu.eg Cairo, Egypt, October 2012 Binary Search Trees (BST) 1. Hierarchical data structure with a single reference to root
More informationTree Travsersals and BST Iterators
Tree Travsersals and BST Iterators PIC 10B May 25, 2016 PIC 10B Tree Travsersals and BST Iterators May 25, 2016 1 / 17 Overview of Lecture 1 Sorting a BST 2 In-Order Travsersal 3 Pre-Order Traversal 4
More informationCSCI-1200 Data Structures Fall 2014 Lecture 18 Trees, Part III
Review from Lecture 17 CSCI-1200 Data Structures Fall 2014 Lecture 18 Trees, Part III Overview of the ds set implementation begin, find, destroy_tree, insert In-order, pre-order, and post-order traversal;
More informationCSCI-1200 Data Structures Spring 2018 Lecture 18 Trees, Part III
CSCI-1200 Data Structures Spring 2018 Lecture 18 Trees, Part III Review from Lecture 16 & 17 Overview of the ds set implementation begin, find, destroy_tree, insert In-order, pre-order, and post-order
More informationAdvanced Java Concepts Unit 5: Trees. Notes and Exercises
dvanced Java Concepts Unit 5: Trees. Notes and Exercises Tree is a data structure like the figure shown below. We don t usually care about unordered trees but that s where we ll start. Later we will focus
More informationCSCI-1200 Data Structures Spring 2015 Lecture 20 Trees, Part III
CSCI-1200 Data Structures Spring 2015 Lecture 20 Trees, Part III Review from Lecture 18 & 19 Overview of the ds set implementation begin, find, destroy_tree, insert In-order, pre-order, and post-order
More informationCSCI-1200 Data Structures Fall 2018 Lecture 19 Trees, Part III
CSCI-1200 Data Structures Fall 2018 Lecture 19 Trees, Part III Review from Lecture 17 & 18 Overview of the ds set implementation begin, find, destroy_tree, insert In-order, pre-order, and post-order traversal;
More informationCSI33 Data Structures
Outline Department of Mathematics and Computer Science Bronx Community College November 13, 2017 Outline Outline 1 C++ Supplement.1: Trees Outline C++ Supplement.1: Trees 1 C++ Supplement.1: Trees Uses
More informationTrees can be used to store entire records from a database, serving as an in-memory representation of the collection of records in a file.
Large Trees 1 Trees can be used to store entire records from a database, serving as an in-memory representation of the collection of records in a file. Trees can also be used to store indices of the collection
More informationSolution printed. Do not start the test until instructed to do so! CS 2604 Data Structures Midterm Spring Instructions:
VIRG INIA POLYTECHNIC INSTITUTE AND STATE U T PROSI M UNI VERSI TY Instructions: Print your name in the space provided below. This examination is closed book and closed notes, aside from the permitted
More informationTree traversals and binary trees
Tree traversals and binary trees Comp Sci 1575 Data Structures Valgrind Execute valgrind followed by any flags you might want, and then your typical way to launch at the command line in Linux. Assuming
More information1 Short Answer (7 Points Each)
1 Short Answer (7 Points Each) 1. Given the following function, what operations will need to be overloaded in the class T for this code to compile? template T square(t n) { return n * n; } The
More informationBinary Trees
Binary Trees 4-7-2005 Opening Discussion What did we talk about last class? Do you have any code to show? Do you have any questions about the assignment? What is a Tree? You are all familiar with what
More informationTest 1: CPS 100. Owen Astrachan. February 23, 2000
Test 1: CPS 100 Owen Astrachan February 23, 2000 Name: Login: Honor code acknowledgment (signature) Problem 1 value 19 pts. grade Problem 2 24 pts. Problem 3 8 pts. Problem 4 9 pts. Problem 5 6 pts. TOTAL:
More informationMULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR
STUDENT IDENTIFICATION NO MULTIMEDIA COLLEGE JALAN GURNEY KIRI 54100 KUALA LUMPUR FIFTH SEMESTER FINAL EXAMINATION, 2014/2015 SESSION PSD2023 ALGORITHM & DATA STRUCTURE DSEW-E-F-2/13 25 MAY 2015 9.00 AM
More informationCSCI-401 Examlet #5. Name: Class: Date: True/False Indicate whether the sentence or statement is true or false.
Name: Class: Date: CSCI-401 Examlet #5 True/False Indicate whether the sentence or statement is true or false. 1. The root node of the standard binary tree can be drawn anywhere in the tree diagram. 2.
More informationbinary tree empty root subtrees Node Children Edge Parent Ancestor Descendant Path Depth Height Level Leaf Node Internal Node Subtree
Binary Trees A binary tree is made up of a finite set of nodes that is either empty or consists of a node called the root together with two binary trees called the left and right subtrees which are disjoint
More informationCS 231 Data Structures and Algorithms Fall Recursion and Binary Trees Lecture 21 October 24, Prof. Zadia Codabux
CS 231 Data Structures and Algorithms Fall 2018 Recursion and Binary Trees Lecture 21 October 24, 2018 Prof. Zadia Codabux 1 Agenda ArrayQueue.java Recursion Binary Tree Terminologies Traversal 2 Administrative
More informationChapter 5. Binary Trees
Chapter 5 Binary Trees Definitions and Properties A binary tree is made up of a finite set of elements called nodes It consists of a root and two subtrees There is an edge from the root to its children
More informationCMSC 341 Leftist Heaps
CMSC 341 Leftist Heaps Based on slides from previous iterations of this course Today s Topics Review of Min Heaps Introduction of Left-ist Heaps Merge Operation Heap Operations Review of Heaps Min Binary
More informationData Structures and Algorithms
Data Structures and Algorithms CS245-2017S-06 Binary Search Trees David Galles Department of Computer Science University of San Francisco 06-0: Ordered List ADT Operations: Insert an element in the list
More informationAdvanced Data Structures and Algorithms
Advanced Data Structures and Algorithms CS 361 - Fall 2013 Lec. #09: Sorting Tamer Nadeem Dept. of Computer Science Class Objective/Overview Understand Declaration of Associative Container Familiarize
More informationCS302 - Data Structures using C++
CS302 - Data Structures using C++ Topic: Tree Implementations Kostas Alexis Nodes in a Binary Tree Representing tree nodes Must contain both data and pointers to node s children Each node will be an object
More informationTree: non-recursive definition. Trees, Binary Search Trees, and Heaps. Tree: recursive definition. Tree: example.
Trees, Binary Search Trees, and Heaps CS 5301 Fall 2013 Jill Seaman Tree: non-recursive definition Tree: set of nodes and directed edges - root: one node is distinguished as the root - Every node (except
More informationBinary Trees, Binary Search Trees
Binary Trees, Binary Search Trees Trees Linear access time of linked lists is prohibitive Does there exist any simple data structure for which the running time of most operations (search, insert, delete)
More informationMotivation Computer Information Systems Storage Retrieval Updates. Binary Search Trees. OrderedStructures. Binary Search Tree
Binary Search Trees CMPUT 115 - Lecture Department of Computing Science University of Alberta Revised 21-Mar-05 In this lecture we study an important data structure: Binary Search Tree (BST) Motivation
More informationUNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering. Program 8 EECE.3220 Data Structures Fall 2017
UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering Program 8 EECE.3220 Data Structures Fall 2017 Binary Search Trees and Class Templates Word Counter Application The object
More informationa graph is a data structure made up of nodes in graph theory the links are normally called edges
1 Trees Graphs a graph is a data structure made up of nodes each node stores data each node has links to zero or more nodes in graph theory the links are normally called edges graphs occur frequently in
More informationDiscussion 2C Notes (Week 8, February 25) TA: Brian Choi Section Webpage:
Discussion 2C Notes (Week 8, February 25) TA: Brian Choi (schoi@cs.ucla.edu) Section Webpage: http://www.cs.ucla.edu/~schoi/cs32 Trees Definitions Yet another data structure -- trees. Just like a linked
More informationECE 250 Data Structures and Algorithms MID-TERM EXAMINATION B /13:30-14:50 MC-4021/RCH-211
ECE 250 Data Structures and Algorithms MID-TERM EXAMINATION B 2011-02-15/13:30-14:50 MC-4021/RCH-211 Instructions: There are 63 marks. It will be marked out of 55. No aides. Turn off all electronic media
More informationEECE.3220: Data Structures Spring 2017
EECE.3220: Data Structures Spring 2017 Lecture 14: Key Questions February 24, 2017 1. Describe the characteristics of an ADT to store a list. 2. What data members would be necessary for a static array-based
More informationBinary Trees. Directed, Rooted Tree. Terminology. Trees. Binary Trees. Possible Implementation 4/18/2013
Directed, Rooted Tree Binary Trees Chapter 5 CPTR 318 Every non-empty directed, rooted tree has A unique element called root One or more elements called leaves Every element except root has a unique parent
More informationCMSC 341 Lecture 15 Leftist Heaps
Based on slides from previous iterations of this course CMSC 341 Lecture 15 Leftist Heaps Prof. John Park Review of Heaps Min Binary Heap A min binary heap is a Complete binary tree Neither child is smaller
More informationA linear structure is an ordered (e.g., sequenced) arrangement of elements.
Lists, Stacks, and Queues 1 A linear structure is an ordered (e.g., sequenced) arrangement of elements. There are three common types of linear structures: list stack queue random insertion and deletion
More informationSolution printed. Do not start the test until instructed to do so! CS 2604 Data Structures Midterm Summer I Instructions:
VIRG INIA POLYTECHNIC INSTITUTE AND STATE U T PROSI M UNI VERSI TY Instructions: Print your name in the space provided below. This examination is closed book and closed notes, aside from the permitted
More informationCS350: Data Structures Tree Traversal
Tree Traversal James Moscola Department of Engineering & Computer Science York College of Pennsylvania James Moscola Defining Trees Recursively Trees can easily be defined recursively Definition of a binary
More information- 1 - Handout #22S May 24, 2013 Practice Second Midterm Exam Solutions. CS106B Spring 2013
CS106B Spring 2013 Handout #22S May 24, 2013 Practice Second Midterm Exam Solutions Based on handouts by Eric Roberts and Jerry Cain Problem One: Reversing a Queue One way to reverse the queue is to keep
More informationCMSC 341 Lecture 15 Leftist Heaps
Based on slides from previous iterations of this course CMSC 341 Lecture 15 Leftist Heaps Prof. John Park Review of Heaps Min Binary Heap A min binary heap is a Complete binary tree Neither child is smaller
More informationOutline. An Application: A Binary Search Tree. 1 Chapter 7: Trees. favicon. CSI33 Data Structures
Outline Chapter 7: Trees 1 Chapter 7: Trees Approaching BST Making a decision We discussed the trade-offs between linked and array-based implementations of sequences (back in Section 4.7). Linked lists
More information1. Stack overflow & underflow 2. Implementation: partially filled array & linked list 3. Applications: reverse string, backtracking
Review for Test 2 (Chapter 6-10) Chapter 6: Template functions & classes 1) What is the primary purpose of template functions? A. To allow a single function to be used with varying types of arguments B.
More informationTrees. (Trees) Data Structures and Programming Spring / 28
Trees (Trees) Data Structures and Programming Spring 2018 1 / 28 Trees A tree is a collection of nodes, which can be empty (recursive definition) If not empty, a tree consists of a distinguished node r
More informationBinary Tree Implementation
Binary Tree Implementation Lecture 31 Sections 12.2-12.3 Robb T. Koether Hampden-Sydney College Mon, Apr 5, 2010 Robb T. Koether (Hampden-Sydney College) Binary Tree Implementation Mon, Apr 5, 2010 1 /
More informationLecture 23: Binary Search Trees
Lecture 23: Binary Search Trees CS 62 Fall 2017 Kim Bruce & Alexandra Papoutsaki 1 BST A binary tree is a binary search tree iff it is empty or if the value of every node is both greater than or equal
More informationName CPTR246 Spring '17 (100 total points) Exam 3
Name CPTR246 Spring '17 (100 total points) Exam 3 1. Linked Lists Consider the following linked list of integers (sorted from lowest to highest) and the changes described. Make the necessary changes in
More informationTrees. CSE 373 Data Structures
Trees CSE 373 Data Structures Readings Reading Chapter 7 Trees 2 Why Do We Need Trees? Lists, Stacks, and Queues are linear relationships Information often contains hierarchical relationships File directories
More informationIX. Binary Trees (Chapter 10)
IX. Binary Trees (Chapter 10) -1- A. Introduction: Searching a linked list. 1. Linear Search /* To linear search a list for a particular Item */ 1. Set Loc = 0; 2. Repeat the following: a. If Loc >= length
More informationBinary Search Tree 1.0. Generated by Doxygen Mon Jun :12:39
Binary Search Tree 1.0 Generated by Doxygen 1.7.1 Mon Jun 6 2011 16:12:39 Contents 1 Binary Search Tree Program 1 1.1 Introduction.......................................... 1 2 Data Structure Index 3
More informationLECTURE 11 TREE TRAVERSALS
DATA STRUCTURES AND ALGORITHMS LECTURE 11 TREE TRAVERSALS IMRAN IHSAN ASSISTANT PROFESSOR AIR UNIVERSITY, ISLAMABAD BACKGROUND All the objects stored in an array or linked list can be accessed sequentially
More information* Due 11:59pm on Sunday 10/4 for Monday lab and Tuesday 10/6 Wednesday Lab
===Lab Info=== *100 points * Due 11:59pm on Sunday 10/4 for Monday lab and Tuesday 10/6 Wednesday Lab ==Assignment== In this assignment you will work on designing a class for a binary search tree. You
More informationICOM 4035 Data Structures. Dr. Manuel Rodríguez Martínez Electrical and Computer Engineering Department
ICOM 4035 Data Structures Dr. Manuel Rodríguez Martínez Electrical and Computer Engineering Department Readings Chapter 17 of textbook: Linked Lists ICOM 4035 Dr. Manuel Rodriguez Martinez 2 What is missing?
More informationDoubly-Linked Lists
Doubly-Linked Lists 4-02-2013 Doubly-linked list Implementation of List ListIterator Reading: Maciel, Chapter 13 HW#4 due: Wednesday, 4/03 (new due date) Quiz on Thursday, 4/04, on nodes & pointers Review
More informationTrees. Carlos Moreno uwaterloo.ca EIT https://ece.uwaterloo.ca/~cmoreno/ece250
Carlos Moreno cmoreno @ uwaterloo.ca EIT-4103 https://ece.uwaterloo.ca/~cmoreno/ece250 Today's class: We'll discuss one possible implementation for trees (the general type of trees) We'll look at tree
More informationWe have the pointers reference the next node in an inorder traversal; called threads
Leaning Objective: In this Module you will be learning the following: Threaded Binary Tree Introduction: Threaded Binary Tree is also a binary tree in which all left child pointers that are NULL (in Linked
More informationH.O.#12 Fall 2015 Gary Chan. Binary Tree (N:12)
H.O.#12 Fall 2015 Gary Chan Binary Tree (N:12) Outline Binary tree terminology Tree traversals: preorder, inorder and postorder Dictionary and binary search tree Binary search tree operations Search min
More informationMulti-Way Search Tree
Multi-Way Search Tree A multi-way search tree is an ordered tree such that Each internal node has at least two and at most d children and stores d -1 data items (k i, D i ) Rule: Number of children = 1
More informationLab 2: ADT Design & Implementation
Lab 2: ADT Design & Implementation By Dr. Yingwu Zhu, Seattle University 1. Goals In this lab, you are required to use a dynamic array to design and implement an ADT SortedList that maintains a sorted
More informationHeaps. A complete binary tree can be easily stored in an array - place the root in position 1 (for convenience)
Binary heap data structure Heaps A binary heap is a special kind of binary tree - has a restricted structure (must be complete) - has an ordering property (parent value is smaller than child values) Used
More informationUnit 9 Practice Test (AB27-30)
Unit 9 Practice Test (AB27-30) Name 1. Consider the following method: public static int checktree(treenode root) return 0; int x = checktree(root.getleft()); if ( x >= 0 && checktree(root.getright()) ==
More information1 Binary trees. 1 Binary search trees. 1 Traversal. 1 Insertion. 1 An empty structure is an empty tree.
Unit 6: Binary Trees Part 1 Engineering 4892: Data Structures Faculty of Engineering & Applied Science Memorial University of Newfoundland July 11, 2011 1 Binary trees 1 Binary search trees Analysis of
More information