UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering. Program 10 EECE.3220 Data Structures Fall 2017.

Size: px
Start display at page:

Download "UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering. Program 10 EECE.3220 Data Structures Fall 2017."

Transcription

1 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 word list will be stored as a hash table. This program uses 3 of the data structures from class: hash tables, binary search trees, and linked lists. Program 10 supports the following commands: Command A C D I O Q Description Remove entries one at-a-time from the hash table, inserting each word into a binary search tree until the hash table is empty; then display the BST in alphabetical order. After displaying the alphabetized list, remove leaf nodes from the BST one at-a-time, inserting them back into the hash table until the BST is empty. Clear (erase) the entire hash table. Accept a word from the keyboard and delete it from the hash table. Accept a word from the keyboard and if not already there insert it into the hash table. If the word is already in the table simply update its count. Ask for the name of a text file from the keyboard. Open and read the text file, storing words and their number of occurrences in the hash table. The word list is stored as a hash table, sorted only when needed into a binary search tree. After using the sorted list, it must be restored to a hash table. Terminate the application. Hash Table Collision Handling The words of the dictionary are to be stored in a hash table. Collisions are to be handled by chaining. The hash table is an array of pointers to linked lists (buckets). Each bucket stores words that hash to one position in the hash table. Your Program 4 linked list class will be used to operate on the bucket lists. Hash Function Use the first and last letters in the word to form x in the following equation to randomize the distribution of your hash function: Hash(x) = ((C1 * x) + C2) % C3 % Capacity where x = word[0]+(word[word.size()-1]<<8) where C1 = 25173, C2 = 13849, C3 = 65536, and Capacity = 11. Note that you need not provide a destructor function, a copy constructor, or assignment operator for your hash table class. BST Module Use your BST class template from Program 8. You will need to add the two functions RemoveLeaf() and RRemoveLeaf() given below, and remove the function OutputByLevel(). Linked List Module Use your linked list class from Program 4 to implement the chained buckets; convert this class to a class template.

2 Program 10 EECE.3220 Page 2 REQUIRED FILES The following files are required. FILES Prog10.cpp Provided do not modify. HashTable_T.h You supply this module. BST_T.h Your Program 8 file BST_T.h updated LinkedList_T.h Your program 6 linked list module CONTENTS The main program file. Defines the class template for class HashTable. Same as Program 8, but remove the function OutputBylevel(), add the public member function RemoveLeaf() and the private member function RRemoveLeaf(). Same as Program 6, but convert your linked list class to a class template. In addition to turning the class into a class template you must also add one inline member function called Update( ) whose purpose is to update the data member of a linked list node.. Here is the function definition to add to your linked list class definition: WordCounter.h CursorCntl.h CursorCntl.cpp Provided, do not change. Provided, do not change // Update the current entry. void Update(const NodeData &d) assert(!atend()); current->data = d; } Defines a class WordCount, whose objects store a word string along with an unsigned integer that counters the number of occurrences of that word. This version adds the function HashKey( ). The CursorCntl module provides functions for controlling the cursor position in the console window. >i tom >i bob >i sue >i ralph >i tom >i bob >i sue >i tom >i bob >i tom >a bob=3 ralph=1 sue=2 tom=4 >d bob >a ralph=1 sue=2 tom=4 SAMPLE RUN >c >owordfile.txt >d all >d come >d jumped >d fox >a brown=3 doggie=9 for=5 good=7 is=2 lazy=8 men=8 now=1 over=6 party=13 quick=2 the=23 time=4 to=20 >q Press any key to continue.

3 Program 10 EECE.3220 Page 3 Hash Table Module The class definition for the HashTable class template is shown below: REQUIRED HASH TABLE CLASS TEMPLATE DEFINITION #include "LinkedList_T.h" //----- c l a s s H a s h T a b l e template <typename ItemData, unsigned NumBuckets> class HashTable public: //Constructor: Make all buckets empty. HashTable(); // Search the table for entry "d." If "d" is found, return true,make "d" // the current entry for this bucket, and make this the current bucket. // If "d" is not found, return false. bool Search(ItemData &d); // Add an entry to the table. void Insert(ItemData &d); // Delete the current entry. void Delete(); // Return true if the table is empty. bool Empty() return size == 0; } // Return the number of entries in the table. unsigned Size() return size; } // Return the current entry. ItemData CurrentEntry(); // Remove the first entry from the table. ItemData Remove(); // Output the entire table to the stream "os", 1 entry per line. void Output(ostream &os); // Show the hash table on the right side of the screen. void Show(); unsigned size; // The number of entries in the table. unsigned curbucket; // The index of the current bucket LinkedList<ItemData> *bucket[numbuckets]; // Array of pointers to linked lists // The hashing function unsigned long Hash(unsigned x); BST Module This is the BST class template from Program 8 with the following changes: 1. Do not include Queue_T.h. 2. Remove the function OutputByLevel( ). 3. Add the public function RemoveLeaf() see below. 4. Add the private function RRemoveLeaf( ) see below. The class definition for the BST class template is shown below:

4 Program 10 EECE.3220 Page 4 REQUIRED BST CLASS TEMPLATE DEFINITION template <typename NodeData> class BST // Tree node class definition struct Node // Constructors Node() : left(0), right(0) } Node(const NodeData &d) : data(d), left(0), right(0) } // Data Members NodeData data; // The "contents" of the node Node *left; // Link to the left successor node Node *right; // Link to the right successor node public: // Constructor BST() : root(0), current(0) } // True if the tree is empty bool Empty() const return root == 0;} // Search for an entry in the tree. If the entry is found, // make it the "current" entry. If not, make the current entry // NULL. Return true if the entry is found; otherwise return false. bool Search(NodeData &d); // Add a new node to the tree. void Insert(NodeData &d); // Delete the current node. void Delete(); // Remove the leftmost leave node and return its data. NodeData RemoveLeaf() return RRemoveLeaf(root); } // Output the tree to the "os" in the indicated sequence. void OutputInOrder(ostream &os) const; // Output inorder void OutputPreOrder(ostream &os) const; // Output preorder void OutputPostOrder(ostream &os) const; // Output postorder // Retrieve the data part of the current node. NodeData &Current() assert(!empty()); return current->data; } // Show the binary tree on the screen. void ShowTree() const; Node *root; // Points to the root node Node *current; // Points to the current node Node *parent; // Points to current node's parent // Recursive Search bool RSearch(Node *subtree, NodeData &d); // Recursive remove the leftmost leave node and return its data. NodeData RRemoveLeaf(Node *&r); // Recursive Insert void RInsert(Node *&subtree, NodeData &d); // Recursive Traversal Functions void ROutputInOrder(Node *subtree, ostream &os) const; void ROutputPreOrder(Node *subtree, ostream &os) const; void ROutputPostOrder(Node *subtree, ostream &os) const; // Find the parent of leftmost right successor of the current node. Node *ParentOfLeftMostRightSucc(Node *node, Node *parent) const; // Show the binary tree on the screen. void RShowTree(Node *subtree, int x, int y) const;

5 Program 10 EECE.3220 Page 5 Function RRemoveLeaf() /* R R e m o v e L e a f ( ) PURPOSE Remove the leftmost leaf node and delete it from the tree. PRECONDITION the subtree "r" is not empty. INPUT PARAMETERS r - the root node of the subtree from which the leaf node is to be removed RETURN VALUE the data part of the removed leaf node */ template <typename NodeData> NodeData BST<NodeData>::RRemoveLeaf(Node *&r) // Make sure that the tree is not empty. assert(r!= 0); // Does this node have any successors? if (r->left!= 0) // There is a left successor, traverse left subtree return RRemoveLeaf(r->left); else if (r->right!= 0) // There is a right successor, traverse right subtree return RRemoveLeaf(r->right); else // There are no successors; it's a leaf node, capture node data NodeData result = r->data; // Delete the leaf node delete r; // Mark the subtree empty r = 0; } // Return the data from the removed node. return result; }

6 Program 10 EECE.3220 Page 6 Word Counter Module The class definition for the HashTable class template is shown below: REQUIRED WORD COUNTER CLASS DEFINITION (Updated) class WordCount public: // Constructors WordCount() : word(""), count(0) } WordCount(string theword, unsigned thecount = 1) : word(theword), count(thecount) } // Accessors string Word() const return word; } unsigned Count() const return count; } unsigned Size() return word.size(); } // Hash key unsigned HashKey() return word[0] + (word[word.size()-1]<<8); } // Mutator void Update() ++count; } // Output a Word to a stream. void Show(ostream &os) os << word << "=" << count; } // Overloaded operators bool operator<(wordcount &rhs) return word < rhs.word; } bool operator<=(wordcount &rhs) return word <= rhs.word; } bool operator>(wordcount &rhs) return word > rhs.word; } bool operator>=(wordcount &rhs) return word >= rhs.word; } bool operator==(wordcount &rhs) return word == rhs.word; } bool operator!=(wordcount &rhs) return word!= rhs.word; } string word; // The word to be counted unsigned count; // The number of occurrences

7 Program 10 EECE.3220 Page 7 Linked List The class definition for the LinkedList class template is shown below (same as Program 4): REQUIRED LINKED LIST CLASS TEMPLATE DEFINITION (Updated) //----- C l a s s L i n k e d L i s t template <typename NodeData> class LinkedList // List node class definition struct Node NodeData data; // The "contents" of the node Node *next; // Link to the next node // Node Constructor Functions Node()} Node(const NodeData &thedata, Node * const thenext = 0) : data(thedata), next(thenext) } public: // Constructors LinkedList(); // True if the list is empty bool Empty() const; // True if the current position is beyond the last entry. bool AtEnd() const; // Rewind the current entry to the beginning of the list. void Rewind() current = first; pred = 0; } // Skip to the next entry in the list. void Skip(); // Get the contents of the current list entry. NodeData CurrentEntry(); // Insert a new list entry before the current entry. void Insert(const NodeData &d); void Increment() assert(!atend(); current->update); } // Update the current entry. void Update(const NodeData &d) assert(!atend()); current->data = d; } //Delete the current entry. //The new current entry is the successor of the deleted node. void Delete(); Node *first; Node *current; Node *pred; // Points to the first node in the list // Points to the current node // Points to the node preceding the current entry.

8 Program 10 EECE.3220 Page 8 GENERAL REQUIREMENTS 1. Your hash table must be implemented as class template in the file HashTable_T.h, and must be completely generic, having no knowledge of the structure of the data part of an entry. 2. Use the provided files Prog10.cpp, WordCount.h, CursorCntl.cpp and CursorCntl.h starter files without change. 3. You may not define any additional data members. 4. Use your BST class template from Program 8 updated as described above.. 5. Use your linked list class from Program 4converted to a class template. 6. Your program's output must appear exactly as shown in the sample run above, producing exactly the same output format. 7. Use const definitions to define symbolic constants rather than hard-coding constants into your program. For example specify the array dimensions (size) with a symbolic constant. Then, it is easy to change the sizes of all of the arrays. Do not use #define to name constants. 8. Use descriptive names throughout your program. Strive to make your code so readable that is self-explanatory. 9. Use a consistent indentation scheme to help show the structure of your program. 10. Use a consistent capitalization convention to distinguish variables from constants. The preferred convention is that constant names, type names, class names, and function names have the first letter of each word capitalized (e.g., MaxCurvePoints). Variable names, data members, and parameter names, have the first letter of every word except the first capitalized (e.g., thepoint, numpoints). Using this convention, names representing values that may change (L-values) start with lower case. If a name starts with a capital, its value cannot be changed. 11. Include a sufficient number of comments to explain your program. See your instructor s demo programs, which illustrate acceptable comment usage. 12. Do not use goto statements. 13. Do not use global variables. 14. No function definition may be longer than one page (60 lines). 15. Do not use redundant code. If you need the same procedure in more than one place, make it a function. 16. Keep your functions simple. If your program seems overly complex, it probably is. This means that you did not spend enough time designing, before you started typing code. KEEP IT SIMPLE! 17. Eliminate all warning messages. 18. Do not use C-style input-output functions (stdio) such as printf(), scanf(), getchar(), putchar(), etc. Hand in the following items: SUBMISSION REQUIREMENTS 1. A computer printout of the files HashTable_T.h, LinkedList_T.h, and BST_T.h. 2. A computer printout of 2 test run(s) of your program showing two examples of your program s operation. Make sure that you include the sample run shown above. 3. Zip up the source files: HashTable_T.h, LinkedList_T.h and BST_T.h. Name the zip file LASTNAME.zip, and submit it via blackboard. These source files must be identical to the printouts from item 1. If you make changes, then submit the changed version. Only the last submission will be graded. Make sure that your zip file includes only the requested files and no folders. NOTE: Programs received after 1:00 PM on the due date will be considered late.

UNIVERSITY 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 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 information

UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering. Program 9 EECE.3220 Data Structures Fall 2017

UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering. Program 9 EECE.3220 Data Structures Fall 2017 UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering Program 9 EECE.3220 Data Structures Fall 2017 Heaps and Heap Sort Word Counter Application Revisited The object of this

More information

Chapter 20: Binary Trees

Chapter 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 information

UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering EXAM November 2016

UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering EXAM November 2016 UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering 16.322 EXAM 2 14 November 2016 Problem Weight Score 1 30 % 2 36 % 3 32 % Bonus 2 % TOTAL 100 % INSTRUCTIONS You may

More information

SerIODriver.c Prog2.c SerIODriver.c. Figure 1: Program 2 Data Flow

SerIODriver.c Prog2.c SerIODriver.c. Figure 1: Program 2 Data Flow UNIVERSITY OF MASSACHUSETTS LOWELL Department of Electrical and Computer Engineering Program 2 EECE.4720 / EECE.5720 Embedded Real Time Systems Spring 2018 Polled I/O and Cooperative Multitasking The purpose

More information

! Tree: set of nodes and directed edges. ! Parent: source node of directed edge. ! Child: terminal node of directed edge

! 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 information

Trees, Binary Trees, and Binary Search Trees

Trees, 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 information

Trees, Part 1: Unbalanced Trees

Trees, Part 1: Unbalanced Trees Trees, Part 1: Unbalanced Trees The first part of this chapter takes a look at trees in general and unbalanced binary trees. The second part looks at various schemes to balance trees and/or make them more

More information

! Tree: set of nodes and directed edges. ! Parent: source node of directed edge. ! Child: terminal node of directed edge

! 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 information

Chapter 12: Searching: Binary Trees and Hash Tables. Exercises 12.1

Chapter 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 information

CMSC 341 Lecture 10 Binary Search Trees

CMSC 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 information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 11: Binary Search Trees MOUNA KACEM mouna@cs.wisc.edu Fall 2018 General Overview of Data Structures 2 Introduction to trees 3 Tree: Important non-linear data structure

More information

CMSC 341. Binary Search Trees CMSC 341 BST

CMSC 341. Binary Search Trees CMSC 341 BST CMSC 341 Binary Search Trees CMSC 341 BST Announcements Homework #3 dues Thursday (10/5/2017) Exam #1 next Thursday (10/12/2017) CMSC 341 BST A Generic Tree CMSC 341 BST Binary Tree CMSC 341 BST The Binary

More information

TREES. Trees - Introduction

TREES. Trees - Introduction TREES Chapter 6 Trees - Introduction All previous data organizations we've studied are linear each element can have only one predecessor and successor Accessing all elements in a linear sequence is O(n)

More information

Trees. Chapter 6. strings. 3 Both position and Enumerator are similar in concept to C++ iterators, although the details are quite different.

Trees. 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 information

Tree: non-recursive definition. Trees, Binary Search Trees, and Heaps. Tree: recursive definition. Tree: example.

Tree: 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 information

Binary Trees. For example: Jargon: General Binary Trees. root node. level: internal node. edge. leaf node. Data Structures & File Management

Binary 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 information

Binary Tree Node Relationships. Binary Trees. Quick Application: Expression Trees. Traversals

Binary 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 information

CS 206 Introduction to Computer Science II

CS 206 Introduction to Computer Science II CS 206 Introduction to Computer Science II 02 / 24 / 2017 Instructor: Michael Eckmann Today s Topics Questions? Comments? Trees binary trees two ideas for representing them in code traversals start binary

More information

* Due 11:59pm on Sunday 10/4 for Monday lab and Tuesday 10/6 Wednesday Lab

* 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 information

Binary Search Trees. Contents. Steven J. Zeil. July 11, Definition: Binary Search Trees The Binary Search Tree ADT...

Binary 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 information

a graph is a data structure made up of nodes in graph theory the links are normally called edges

a 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 information

Binary Trees. Examples:

Binary Trees. Examples: Binary Trees A tree is a data structure that is made of nodes and pointers, much like a linked list. The difference between them lies in how they are organized: In a linked list each node is connected

More information

ECE 244 Programming Fundamentals Fall Lab Assignment #5: Binary Search Trees

ECE 244 Programming Fundamentals Fall Lab Assignment #5: Binary Search Trees ECE 244 Programming Fundamentals Fall 2012 1. Objectives Lab Assignment #5: Binary Search Trees The objectives of this assignment are to provide you with more practice on the use of the various C++ concepts/constructs

More information

SCJ2013 Data Structure & Algorithms. Binary Search Tree. Nor Bahiah Hj Ahmad

SCJ2013 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 information

Topic Binary Trees (Non-Linear Data Structures)

Topic Binary Trees (Non-Linear Data Structures) Topic Binary Trees (Non-Linear Data Structures) CIS210 1 Linear Data Structures Arrays Linked lists Skip lists Self-organizing lists CIS210 2 Non-Linear Data Structures Hierarchical representation? Trees

More information

selectors, methodsinsert() andto_string() the depth of a tree and a membership function

selectors, 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 information

IX. Binary Trees (Chapter 10)

IX. 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 information

Topic 7: Algebraic Data Types

Topic 7: Algebraic Data Types Topic 7: Algebraic Data Types 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 5.5, 5.7, 5.8, 5.10, 5.11, 5.12, 5.14 14.4, 14.5, 14.6 14.9, 14.11,

More information

MULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR

MULTIMEDIA 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 information

Trees. (Trees) Data Structures and Programming Spring / 28

Trees. (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 information

CS302 - Data Structures using C++

CS302 - 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 information

CSCE 210/2201 Data Structures and Algorithms. Prof. Amr Goneid

CSCE 210/2201 Data Structures and Algorithms. Prof. Amr Goneid CSCE 20/220 Data Structures and Algorithms Prof. Amr Goneid Fall 208 / Spring 209 CSCE 20/220 DATA STRUCTURES AND ALGORITHMS Prof. Amr Goneid Instructor: Prof. Amr Goneid E-mail: goneid@aucegypt.edu Office:

More information

CSCE 210/2201 Data Structures and Algorithms. Prof. Amr Goneid. Fall 2018

CSCE 210/2201 Data Structures and Algorithms. Prof. Amr Goneid. Fall 2018 CSCE 20/220 Data Structures and Algorithms Prof. Amr Goneid Fall 208 CSCE 20/220 DATA STRUCTURES AND ALGORITHMS Dr. Amr Goneid Course Goals To introduce concepts of Data Models, Data Abstraction and ADTs

More information

COSC 2007 Data Structures II Final Exam. Part 1: multiple choice (1 mark each, total 30 marks, circle the correct answer)

COSC 2007 Data Structures II Final Exam. Part 1: multiple choice (1 mark each, total 30 marks, circle the correct answer) COSC 2007 Data Structures II Final Exam Thursday, April 13 th, 2006 This is a closed book and closed notes exam. There are total 3 parts. Please answer the questions in the provided space and use back

More information

B.V. Patel Institute of Business Management, Computer & Information Technology, Uka Tarsadia University

B.V. Patel Institute of Business Management, Computer & Information Technology, Uka Tarsadia University Unit 1 Programming Language and Overview of C 1. State whether the following statements are true or false. a. Every line in a C program should end with a semicolon. b. In C language lowercase letters are

More information

Binary Trees, Binary Search Trees

Binary 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 information

the pointer range [first, last) into the tree

the pointer range [first, last) into the tree 1 #ifndef BINARY_SEARCH_TREE_CLASS 2 #define BINARY_SEARCH_TREE_CLASS 3 4 #ifndef NULL 5 #include 6 #endif // NULL 7 8 #include // for setw() 9 #include // for format conversion

More information

Course Review for. Cpt S 223 Fall Cpt S 223. School of EECS, WSU

Course Review for. Cpt S 223 Fall Cpt S 223. School of EECS, WSU Course Review for Midterm Exam 1 Cpt S 223 Fall 2011 1 Midterm Exam 1 When: Friday (10/14) 1:10-2pm Where: in class Closed book, closed notes Comprehensive Material for preparation: Lecture slides & in-class

More information

We have the pointers reference the next node in an inorder traversal; called threads

We 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 information

References and Homework ABSTRACT DATA TYPES; LISTS & TREES. Abstract Data Type (ADT) 9/24/14. ADT example: Set (bunch of different values)

References and Homework ABSTRACT DATA TYPES; LISTS & TREES. Abstract Data Type (ADT) 9/24/14. ADT example: Set (bunch of different values) 9// References and Homework Text: Chapters, and ABSTRACT DATA TYPES; LISTS & TREES Homework: Learn these List methods, from http://docs.oracle.com/javase/7/docs/api/java/util/list.html add, addall, contains,

More information

Solution printed. Do not start the test until instructed to do so! CS 2604 Data Structures Midterm Spring Instructions:

Solution 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 information

Name CPTR246 Spring '17 (100 total points) Exam 3

Name 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 information

Also, recursive methods are usually declared private, and require a public non-recursive method to initiate them.

Also, recursive methods are usually declared private, and require a public non-recursive method to initiate them. Laboratory 11: Expression Trees and Binary Search Trees Introduction Trees are nonlinear objects that link nodes together in a hierarchical fashion. Each node contains a reference to the data object, a

More information

Advanced Java Concepts Unit 5: Trees. Notes and Exercises

Advanced 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 information

HO #13 Fall 2015 Gary Chan. Hashing (N:12)

HO #13 Fall 2015 Gary Chan. Hashing (N:12) HO #13 Fall 2015 Gary Chan Hashing (N:12) Outline Motivation Hashing Algorithms and Improving the Hash Functions Collisions Strategies Open addressing and linear probing Separate chaining COMP2012H (Hashing)

More information

CS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 11:00 PM for 100 points Due Monday, October 11:00 PM for 10 point bonus

CS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 11:00 PM for 100 points Due Monday, October 11:00 PM for 10 point bonus CS3114 (Fall 2013) PROGRAMMING ASSIGNMENT #2 Due Tuesday, October 15 @ 11:00 PM for 100 points Due Monday, October 14 @ 11:00 PM for 10 point bonus Updated: 10/10/2013 Assignment: This project continues

More information

Binary Trees and Binary Search Trees

Binary Trees and Binary Search Trees Binary Trees and Binary Search Trees Learning Goals After this unit, you should be able to... Determine if a given tree is an instance of a particular type (e.g. binary, and later heap, etc.) Describe

More information

CSCI Trees. Mark Redekopp David Kempe

CSCI 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 information

Garbage Collection: recycling unused memory

Garbage Collection: recycling unused memory Outline backtracking garbage collection trees binary search trees tree traversal binary search tree algorithms: add, remove, traverse binary node class 1 Backtracking finding a path through a maze is an

More information

Binary Tree. Binary tree terminology. Binary tree terminology Definition and Applications of Binary Trees

Binary 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 information

Computer Science 302 Spring 2007 Practice Final Examination: Part I

Computer Science 302 Spring 2007 Practice Final Examination: Part I Computer Science 302 Spring 2007 Practice Final Examination: Part I Name: This practice examination is much longer than the real final examination will be. If you can work all the problems here, you will

More information

Binary Search Trees Part Two

Binary Search Trees Part Two Binary Search Trees Part Two Recap from Last Time Binary Search Trees A binary search tree (or BST) is a data structure often used to implement maps and sets. The tree consists of a number of nodes, each

More information

Programming Assignment #4 Binary Trees in C++

Programming Assignment #4 Binary Trees in C++ Programming Assignment #4 Binary Trees in C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie,

More information

B-Trees. nodes with many children a type node a class for B-trees. an elaborate example the insertion algorithm removing elements

B-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 information

BRONX COMMUNITY COLLEGE of the City University of New York DEPARTMENT OF MATHEMATICS AND COMPUTER SCIENCE. Sample Final Exam

BRONX COMMUNITY COLLEGE of the City University of New York DEPARTMENT OF MATHEMATICS AND COMPUTER SCIENCE. Sample Final Exam BRONX COMMUNITY COLLEGE of the City University of New York DEPARTMENT OF MATHEMATICS AND COMPUTER SCIENCE CSI33 Sample Final Exam NAME Directions: Solve problems 1 through 5 of Part I and choose 5 of the

More information

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Final Examination 8:30 AM, Wednesday, April 18, 2012

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Final Examination 8:30 AM, Wednesday, April 18, 2012 MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Final Examination 8:30 AM, Wednesday, April 18, 2012 Instructor: K. S. Booth Time: 150 minutes (two hours thirty minutes)

More information

CSC/MAT-220: Lab 6. Due: 11/26/2018

CSC/MAT-220: Lab 6. Due: 11/26/2018 CSC/MAT-220: Lab 6 Due: 11/26/2018 In Lab 2 we discussed value and type bindings. Recall, value bindings bind a value to a variable and are intended to be static for the life of a program. Type bindings

More information

void insert( Type const & ) void push_front( Type const & )

void 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 information

CSE 143 Final Exam Part 1 - August 18, 2011, 9:40 am

CSE 143 Final Exam Part 1 - August 18, 2011, 9:40 am CSE 143 Final Exam Part 1 - August 18, 2011, 9:40 am Name Student ID # Section TA Name The exam is closed book, closed notes, closed devices, except that you may have a 5x8 card with handwritten notes

More information

BST Implementation. Data Structures. Lecture 4 Binary search trees (BST) Dr. Mahmoud Attia Sakr University of Ain Shams

BST 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 information

Generic BST Interface

Generic BST Interface Generic BST Interface Here s a partial generic BST interface: public class BST

More information

This examination has 11 pages. Check that you have a complete paper.

This 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 information

CS 142 Style Guide Grading and Details

CS 142 Style Guide Grading and Details CS 142 Style Guide Grading and Details In the English language, there are many different ways to convey a message or idea: some ways are acceptable, whereas others are not. Similarly, there are acceptable

More information

IX. Binary Trees (Chapter 10) Linear search can be used for lists stored in an array as well as for linked lists. (It's the method used in the find

IX. Binary Trees (Chapter 10) Linear search can be used for lists stored in an array as well as for linked lists. (It's the method used in the find IX. Binary Trees IX-1 IX. Binary Trees (Chapter 10) 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:

More information

SETS AND MAPS. Chapter 9

SETS 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 information

CSC148-Section:L0301

CSC148-Section:L0301 Slides adapted from Professor Danny Heap course material winter17 CSC148-Section:L0301 Week#8-Friday Instructed by AbdulAziz Al-Helali a.alhelali@mail.utoronto.ca Office hours: Wednesday 11-1, BA2230.

More information

Friday Four Square! 4:15PM, Outside Gates

Friday Four Square! 4:15PM, Outside Gates Binary Search Trees Friday Four Square! 4:15PM, Outside Gates Implementing Set On Monday and Wednesday, we saw how to implement the Map and Lexicon, respectively. Let's now turn our attention to the Set.

More information

CS302 - Data Structures using C++

CS302 - Data Structures using C++ CS302 - Data Structures using C++ Topic: Trees Kostas Alexis Trees List, stacks, and queues are linear in their organization of data. Items are one after another In this section, we organize data in a

More information

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 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 information

CS 206 Introduction to Computer Science II

CS 206 Introduction to Computer Science II CS 206 Introduction to Computer Science II 10 / 10 / 2016 Instructor: Michael Eckmann Today s Topics Questions? Comments? A few comments about Doubly Linked Lists w/ dummy head/tail Trees Binary trees

More information

Binary Trees

Binary 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 information

Preface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS

Preface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS Contents Preface... (vii) CHAPTER 1 INTRODUCTION TO COMPUTERS 1.1. INTRODUCTION TO COMPUTERS... 1 1.2. HISTORY OF C & C++... 3 1.3. DESIGN, DEVELOPMENT AND EXECUTION OF A PROGRAM... 3 1.4 TESTING OF PROGRAMS...

More information

Lec 17 April 8. Topics: binary Trees expression trees. (Chapter 5 of text)

Lec 17 April 8. Topics: binary Trees expression trees. (Chapter 5 of text) Lec 17 April 8 Topics: binary Trees expression trees Binary Search Trees (Chapter 5 of text) Trees Linear access time of linked lists is prohibitive Heap can t support search in O(log N) time. (takes O(N)

More information

Discussion 2C Notes (Week 8, February 25) TA: Brian Choi Section Webpage:

Discussion 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 information

King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department

King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department CPCS204, 2 nd Term 2014 Program 5: FCITbook Assigned: Thursday, May 1 st, 2014 Due: Thursday, May 15

More information

Chapter 17. Linked Data Structures. Copyright 2016 Pearson, Inc. All rights reserved.

Chapter 17. Linked Data Structures. Copyright 2016 Pearson, Inc. All rights reserved. Chapter 17 Linked Data Structures Copyright 2016 Pearson, Inc. All rights reserved. Learning Objectives Nodes and Linked Lists Creating, searching Linked List Applications Stacks, queues, sets, hash tables

More information

Principles of Computer Science

Principles of Computer Science Principles of Computer Science Binary Trees 08/11/2013 CSCI 2010 - Binary Trees - F.Z. Qureshi 1 Today s Topics Extending LinkedList with Fast Search Sorted Binary Trees Tree Concepts Traversals of a Binary

More information

Binary Trees. Height 1

Binary Trees. Height 1 Binary Trees Definitions A tree is a finite set of one or more nodes that shows parent-child relationship such that There is a special node called root Remaining nodes are portioned into subsets T1,T2,T3.

More information

Trees 2: Linked Representation, Tree Traversal, and Binary Search Trees

Trees 2: Linked Representation, Tree Traversal, and Binary Search Trees Trees 2: Linked Representation, Tree Traversal, and Binary Search Trees Linked representation of binary tree Again, as with linked list, entire tree can be represented with a single pointer -- in this

More information

Binary Tree Implementation

Binary 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 information

Makefiles Makefiles should begin with a comment section of the following form and with the following information filled in:

Makefiles Makefiles should begin with a comment section of the following form and with the following information filled in: CS 215 Fundamentals of Programming II C++ Programming Style Guideline Most of a programmer's efforts are aimed at the development of correct and efficient programs. But the readability of programs is also

More information

Heaps & Priority Queues. (Walls & Mirrors - Remainder of Chapter 11)

Heaps & Priority Queues. (Walls & Mirrors - Remainder of Chapter 11) Heaps & Priority Queues (Walls & Mirrors - Remainder of Chapter 11) 1 Overview Array-Based Representation of a Complete Binary Tree Heaps The ADT Priority Queue Heap Implementation of the ADT Priority

More information

Part I: Short Answer (12 questions, 65 points total)

Part I: Short Answer (12 questions, 65 points total) CSE 143 Sp01 Final Exam Sample Solution page 1 of 14 Part I: Short Answer (12 questions, 65 points total) Answer all of the following questions. READ EACH QUESTION CAREFULLY. Answer each question in the

More information

"sort A" "sort B" "sort C" time (seconds) # of elements

sort A sort B sort C time (seconds) # of elements Test 2: CPS 100 Owen Astrachan and Dee Ramm April 9, 1997 Name: Honor code acknowledgment (signature) Problem 1 value 15 pts. grade Problem 2 12 pts. Problem 3 17 pts. Problem 4 13 pts. Problem 5 12 pts.

More information

Compuer Science 62 Assignment 10

Compuer Science 62 Assignment 10 Compuer Science 62 Assignment 10 Due 11:59pm on Thursday, April 22, 2010 This assignment is the C++ version of the animal game. The program will have three parts, which have been carefully specified. You

More information

INF2220: algorithms and data structures Series 1

INF2220: algorithms and data structures Series 1 Universitetet i Oslo Institutt for Informatikk A. Maus, R.K. Runde, I. Yu INF2220: algorithms and data structures Series 1 Topic Trees & estimation of running time (Exercises with hints for solution) Issued:

More information

FINALTERM EXAMINATION Fall 2009 CS301- Data Structures Question No: 1 ( Marks: 1 ) - Please choose one The data of the problem is of 2GB and the hard

FINALTERM EXAMINATION Fall 2009 CS301- Data Structures Question No: 1 ( Marks: 1 ) - Please choose one The data of the problem is of 2GB and the hard FINALTERM EXAMINATION Fall 2009 CS301- Data Structures Question No: 1 The data of the problem is of 2GB and the hard disk is of 1GB capacity, to solve this problem we should Use better data structures

More information

CSE100. Advanced Data Structures. Lecture 12. (Based on Paul Kube course materials)

CSE100. Advanced Data Structures. Lecture 12. (Based on Paul Kube course materials) CSE100 Advanced Data Structures Lecture 12 (Based on Paul Kube course materials) CSE 100 Coding and decoding with a Huffman coding tree Huffman coding tree implementation issues Priority queues and priority

More information

Binary Trees Fall 2018 Margaret Reid-Miller

Binary Trees Fall 2018 Margaret Reid-Miller Binary Trees 15-121 Fall 2018 Margaret Reid-Miller Trees Fall 2018 15-121 (Reid-Miller) 2 Binary Trees A binary tree is either empty or it contains a root node and left- and right-subtrees that are also

More information

Outline. Preliminaries. Binary Trees Binary Search Trees. What is Tree? Implementation of Trees using C++ Tree traversals and applications

Outline. Preliminaries. Binary Trees Binary Search Trees. What is Tree? Implementation of Trees using C++ Tree traversals and applications Trees 1 Outline Preliminaries What is Tree? Implementation of Trees using C++ Tree traversals and applications Binary Trees Binary Search Trees Structure and operations Analysis 2 What is a Tree? A tree

More information

Tutorial 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}

Tutorial 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 information

- 1 - Handout #22S May 24, 2013 Practice Second Midterm Exam Solutions. CS106B Spring 2013

- 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 information

AP Programming - Chapter 20 Lecture page 1 of 17

AP Programming - Chapter 20 Lecture page 1 of 17 page 1 of 17 Advanced Data Structures Introduction: The main disadvantage with binary search is that it requires that the array remain sorted. Keeping an array sorted requires an insertion every time an

More information

Multiple choice questions. Answer on Scantron Form. 4 points each (100 points) Which is NOT a reasonable conclusion to this sentence:

Multiple choice questions. Answer on Scantron Form. 4 points each (100 points) Which is NOT a reasonable conclusion to this sentence: Multiple choice questions Answer on Scantron Form 4 points each (100 points) 1. Which is NOT a reasonable conclusion to this sentence: Multiple constructors for a class... A. are distinguished by the number

More information

Course Review for Finals. Cpt S 223 Fall 2008

Course Review for Finals. Cpt S 223 Fall 2008 Course Review for Finals Cpt S 223 Fall 2008 1 Course Overview Introduction to advanced data structures Algorithmic asymptotic analysis Programming data structures Program design based on performance i.e.,

More information

Advanced Data Structures and Algorithms

Advanced 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 information

CSE100. Advanced Data Structures. Lecture 4. (Based on Paul Kube course materials)

CSE100. Advanced Data Structures. Lecture 4. (Based on Paul Kube course materials) CSE100 Advanced Data Structures Lecture 4 (Based on Paul Kube course materials) Lecture 4 Binary search trees Toward a binary search tree implementation using C++ templates Reading: Weiss Ch 4, sections

More information

Course goals. exposure to another language. knowledge of specific data structures. impact of DS design & implementation on program performance

Course goals. exposure to another language. knowledge of specific data structures. impact of DS design & implementation on program performance Course goals exposure to another language C++ Object-oriented principles knowledge of specific data structures lists, stacks & queues, priority queues, dynamic dictionaries, graphs impact of DS design

More information

CSE 143. Linked Lists. Linked Lists. Manipulating Nodes (1) Creating Nodes. Manipulating Nodes (3) Manipulating Nodes (2) CSE 143 1

CSE 143. Linked Lists. Linked Lists. Manipulating Nodes (1) Creating Nodes. Manipulating Nodes (3) Manipulating Nodes (2) CSE 143 1 CSE 143 Linked Lists [Chapter 4; Chapter 6, pp. 265-271] Linked Lists A linked list is a collection of dynamically allocated nodes Each node contains at least one member (field) that points to another

More information