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 April 29: 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.
builds on Homework 10 by reusing (and perhaps enhancing) the
- 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
- 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).
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
- C-level: Hw10, the binary tree class without delete and
- 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.
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.
- For the final project, submit all the relevant files (.cpp,
.h, Makefile and typescript with a comprehensive set of tests)
for the three parts of the project (binary trees, binary search trees and trees), as:
submit Project1 (or Project2, or Project3) 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").