CS 112
Final Project
Due: Friday,
May 3
by midnight.
The final project asks for the implementation in C++ of a
comprehesive set of tree classes (plain binary tree, binary
search tree and general -
unrestricted - tree).
Each of you will have to do an informal "presentation" to me in class on
Th May 2: describe the interface you have designed, as well as
the testing procedure and data files. The full project is due the
following day, so I can still give you feedback and help with
last minute debugging.
The program
builds on Homework 10 by reusing (and perhaps enhancing) the
following features:
- A menu-driven user interface. There should be an option for
each of the functions already implemented in Hw10, as well as for the new ones
described below.
- A set of abstract data types implemented as a C++ classes
called BinTree (for a general purpose binary tree), BinSearchTree
(for a binary search tree)
and Tree (for a general tree, with no restriction on the
number of children).
- Each class should contain ALL the necessary member functions
that will allow the user to create, destroy, navigate, test, insert and
delete nodes in the tree, and traverse the tree in prefix,
postfix and infix (for binary), or prefic and postfix, for a
general tree. They should also contain functions that
apply to specific types of trees (such as reading an array to create a
binary search tree or traversing it to sort, etc. see Hw 10).
Grading
- C-level: Hw10, the binary tree class without delete and
destructor.
- B-level: Hw10, Binary Tree, complete with delete and destructor.
- B+-level: Hw10, plus Binary Search Tree.
- A- level: plus general tree class.
- A level: at least one of the previous classes, templated and
tested on more than two data types.
Remember that among the skills I am
testing you on with the final project are your improved software
engineering abilities, including the development and testing of
software, code reuse, documentation and readability for easy
maintenance.
Any extra feature that you successfully implement (even if not
explicitly asked for, such as extra templated, tested classes) will count as
extra credit and will add points to your grade on the project.
To submit:
- For the final project, submit all the relevant files (.cpp,
.h, Makefile and typescript with a comprehensive set of tests)
as:
submit Project files
- Print the typescript and next to each input test data,
draw (by hand) the corresponding tree, to make it easy
for me to interpret the results.
- Write on the typescript the level you have accomplished with
the project (e.g. "I implemented general Binary Trees without the
destructor, but not Binary Search Trees, and my general Tree
is not fully debugged").
Ileana Streinu