Programming Assignment 6: Morse Code Lookup BST I. Learner Objectives: At the conclusion of this programming assignment, participants should be able to: Design, implement, and test a Binary Search Tree (BST) Apply a BST for looking up Morse Codes Discuss classes versus objects Implement container classes II. Prerequisites: Before starting this programming assignment, participants should be able to: Analyze a basic set of requirements for a problem Compose basic C++ language programs Create basic test cases for a program Apply arrays, strings, and pointers Design, implement, and apply classes Design, implement, and apply linked lists III. Overview & Requirements: Recall, a Binary Search Tree (BST) data structure is a nonlinear data structure. A BST is traversed by starting at the root pointer. The root node is the first node inserted into the tree. Nodes are inserted into the tree such that all items to the left of the root node are less than, and all items to the right of the root are greater than its item. Also, this property holds true for any particular node in the tree. We will visualize a BST in the following way: In this assignment you will be using a BST to convert English characters to Morse code strings. Morse code is a famous coding scheme that assigns a series of dots and dashes to each letter of the alphabet, each digit, and a few special characters. In sound-oriented systems, the dot represents a short sound and the dash represents a long sound. Other representations of dots and dashes are used with light-oriented systems and signal-flag systems (from Deitel and Deitel C How to Program). 1. (15 pts) Defining the BSTNode structure For the first part of the assignment, you should start by designing the BSTNode class for the BST. Create a class for the BSTNode data that will have as its members a character and a string. The character will hold the English text character, and the string will hold the corresponding Morse code characters for that English text character. You should also define left and right child pointers that point to BSTNode objects. You must have a constructor that accepts arguments to set the English text character and Morse code string. 2. (50 pts) Create the BST code and create a Morse lookup BST Next, you should be able to read in the Morse table from a file called “MorseTable.txt”. You should rearrange the Morse table in the file to make sure that your lookup tree is balanced. I recommend that you diagram a tree that provides a balanced tree so that you know how to order your “MorseTable.txt” file. Think about the order of insertions. However, the tree does not have to balance itself. The tree should be built by the constructor for the BST. This means the constructor must open and read the file, create nodes for each character in the tree, insert the nodes into the tree (using an insert () function), and close the file. Note: the tree object could be declared as const, since all changes to it are being performed in the constructor. However, if you declare your object as a const, be sure to also declare your print () and search () functions as const. You should arrange the tree so that it is alphabetically ordered from left to right. Create a print ( ) function that uses recursion to traverse the tree in order (left most printed first). Also, build a search ( ) function that will return the Morse code string for each English character searched for. Do you need to return a found indicator from the search function? Should you use recursion? Finally, implement a destructor, which destroys the entire tree. Morse Code Alphabet: