EECS268:Lab7

From ITTC
Jump to: navigation, search
Navigation
Home
Information

Syllabus
Schedule

Classwork

Labs
Submitting Work


Due time

This lab is due Friday July24th by 11:59pm

Lab conduct

  • Do not use any unauthorized aid, such sites like rentacoder or chegg to obtain answers
  • Do not use code provided by another student
  • Do not reuse code (by you or anyone) from prior semesters
  • If you need help, seek it from:
    • Your lab TA.
    • Me, Dr. Gibbons, my email is jwgibbo@ku.edu / jwgibbo@gmail.com
  • If equipment you don't own (e.g. cycle servers) needs attention or you're having account issues put in a ticket!


Overview

This lab is a continuation on your BST data structure. We will be adding feature to it and the program as a whole.

Binary Search Tree: Phase 2

In addition to the old functionality, your menu must also allow the user to ...

Copy Creates a deep copy of the BST. The user is allowed have at most two BSTs at a time (for your sake). Once a copy is made you'll need to ask the user which tree, original or copy, they want to interact with. Should the user try to make multiple copies, print an error.
Remove Remove a Pokemon from the BST. Obtain an pokedex number (ID) and remove that entry from the BST.
Print Prompt the user for the following:
  • Which pokedex they want to print
  • Traversal order; The user can choose for the pokedex to be written in in, pre, or post order.
Quit Exits the program

BST Interface (Updated)

tempate <typename ItemType, typename KeyType>
class BinarySearchTreeInterface
{
    public:
    virtual ~BinarySearchTreeInterface(){}
    virtual void add(ItemType entry) = 0; //throws std::runtime_error if duplicate added
    virtual ItemType search(KeyType key) const = 0; //throws std::runtime_error if not in tree
    virtual void clear() = 0;
    virtual void remove(KeyType key) = 0; //throws std::runtime_error if not in tree

    //For the following methods, each method will take a function as a parameter
    //These function then call the provided function on every entry in the tree in the appropriate order (i.e. pre, in, post)
    //The function you pass in will need to a static method
    virtual void visitPreOrder(void visit(ItemType)) const = 0; //Visits each node in pre order
    virtual void visitInOrder(void visit(ItemType)) const = 0; //Visits each node in in order
    virtual void visitPostOrder(void visit(ItemType)) const = 0; //Visits each node in post order
};

Rubric

  • 45% Pokedex Interaction
    • 5% Searching
    • 5% Adding entry
    • 15% Deep copying of BST
    • 35% Removing entry
  • 20% Terminal output
    • 10% proper traversal order
    • 10% well formatted output
  • 10% Program stability
  • 5% Logical user interface
  • 5% Needed Operators overloaded