Binary Search Trees (BST) can often be an efficient and useful way to store and retrieve sorted data. However, the efficiency of these data trees relies heavily on how balanced a BST is. For example, searching through the BST on the left is much more efficient than searching through the BST on the right, despite both figures showing valid BST with the exact same elements.To avoid inefficient binary search trees, we use balanced Binary Search Trees. A balanced BST has a balance factor of less than ±threshold, where the balance factor is the difference in heights of the left and right subtrees at any given tree node. One such balanced tree is an AVL tree that maintains a threshold of 1. As soon as a node in an AVL tree has a balance factor of +2/-2, “tree rotations” are performed to maintain balance in the tree.In this project, you will be designing a custom AVL tree to organize UF student accounts based on GatorIDs. You will build methods for insertion, deletion, search, and traversals for an AVL tree data structure. These methods would be called based on certain commands that are invoked in the main method. You are responsible forYour program must support the following commands:In order to receive full credit for this project, you must attempt to create an AVL Tree data structure/object class that is used in your main program. Additionally, this AVL tree should:○ Any invalid or misspelled commands must be ignored with an“unsuccessful” message followed by the execution of the next command.○ You must use the four standard AVL rotations to keep all results standardized for our test cases.○ You must use C++14 and ensure that your code G runs public test cases on Gradescope.○ Additionally a starter template is provided which you can use for locally testing your code which can help you in saving some delay time if you were to repeatedly use a cloud based grader: Project1.zip8 insert “Brandon” 45679999 insert “Brian” 35459999 insert “Briana” 87879999 insert “Bella” 95469999 printInorder remove 45679999 removeInorder 2 printInorder* Note: Line 1 denotes the number of lines or the total number of commands that follow.Output successful successful successful successful Brian, Brandon, Briana, Bella successful successful Brian, BrianaTest your code on Starter template and/or Gradescope. You have five available test cases and you can submit any number of times.In addition to the 5 public test cases, after the due date your submission will be tested with 10 additional test cases. In order to maximize your grade, you need to create your own test cases and run them against your code in the starter template. In particular, you should test your code with test cases that include over 100 insertions into your tree and small tests that cover every case of the four rotations.Slides found hereLinks to an external site.The course staff will maintain an active FAQ Google document to answer your questions. Links to an external site.■ 5 publicly available test cases that are a part of Starter template and/or Gradescope■ 10 test cases that will be added by the course staff during grading■ What is the time complexity of each method (corresponding to a command) in your implementation? Reflect on the worst case time complexity represented in Big O notation.■ Note that the methods here refer to the methods you call for the respective commands. You don’t need to analyze the time complexities of helper methods, constructors, etc. although you have to account for helper methods time complexities when you analyze a command that calls those helper functions. [10 points]■ What did you learn from this assignment and what would you do differently if you had to start over? [5 points] ● Code Style and Design [10 Points]○ 6 points for design decisions and code modularity ■ We inspect the following in your code:■ High cohesion■ Links to an external site.■■ Appropriate modularity■ Relevant access modifiers■ Proper memory management■ Efficient mechanisms for passing parameters in your function signatures■ The client (your int main() method) should not have objects that interact with memory directly – or a well defined API for your AVL Tree○ 1 point for appropriate comments○ 1 point for consistent whitespace mechanism○ 2 points for consistent naming conventions ● Bonus [5 points] – Capped to 100 points○ You can score 5 bonus points if you submit a separate file containing 5 test cases (1 point/test) using the Catch Framework. These tests should be different than the public test cases. Your score is however capped to 100 points for this project. This means that if you pass 14 tests and submit bonus test files, you will get a 100 provided you score full points on the documentation. Also, if you pass 15 tests and score 23 on documentation and design, + 5 points on bonus, you will still score 100 points [your score is 103 but is capped to 100 in this case].○ at least one .cpp file that has your implementation of the entire project including the main. If you use header files or more than one .cpp file, upload all of them together on Gradescope. Feel free to choose the names for your header and .cpp files. Make sure at least one .cpp file contains the main() method.○ one pdf file that has your documentation and your name on the front page of the pdf. Name this pdf as Report.pdf.
Reviews
There are no reviews yet.