Computer Science 261
Exercise set #7
Due: Tuesday, Nov. 8
Consider the following code:
#include <iostream.h>
#include <string.h>
const int NameLen = 21;
class Tree{
public:
Tree();
void PrintTree();
void PrintName(char theName[]);
// The search function. In this case, it simply
// prints a "found" / "not found" message.
void DiagnosticInOrder();
void InsertName(char theName[]);
void DeleteNode(char theName[]);
private:
struct Node{
char Value [NameLen];
Node *left, *right;
};
Node *root;
// Helper functions
void DiagInOrderTraversal(Node* theTree, int level)
{
if (theTree==NULL)
{
for (int k=1; k <= level; ++k) cout << "\t";
cout << "NULL\n";
return;
}
DiagInOrderTraversal(theTree->left, level+1);
for (int k=1; k <= level; ++k) cout << "\t";
cout << theTree ->Value << endl;
DiagInOrderTraversal(theTree ->right, level+1);
return;
}
};
int main()
{
char response;
Tree MyTree;
MyTree.InsertName("HOLMES");
MyTree.InsertName("DEE");
MyTree.InsertName("FANSLER");
MyTree.InsertName("MAIGRET");
MyTree.InsertName("LESTRADE");
MyTree.InsertName("WATSON");
MyTree.InsertName("DREW");
MyTree.InsertName("KELLING");
MyTree.InsertName("LI KAO");
MyTree.InsertName("WOLFE");
MyTree.InsertName("POIROT");
cout << endl << "List of names as stored in the tree:\n" << endl;
MyTree.DiagnosticInOrder();
cout << "\nIn Order: \n\n";
MyTree.PrintTree();
// cout << "Continue? ";
// cin >> response;
// You may want to put these cin/cout statements back in to pause
// before moving on to the next steps (so that you can check your
// work), but please be sure to comment them out again before I
// pick up your program
cout << "\nSearching for Kelling ";
MyTree.PrintName("KELLING");
cout << "\nSearching for Maigret";
MyTree.PrintName("MAIGRET");
cout << endl;
MyTree.DeleteNode("FANSLER");
MyTree.DiagnosticInOrder();
// cout << "Continue? ";
// cin >> response;
MyTree.DeleteNode("DREW");
MyTree.DiagnosticInOrder();
// cout << "Continue? ";
// cin >> response;
MyTree.DeleteNode("MAIGRET");
cout << "\nMaigret should no longer be in the tree\n";
cout << "Searching for Maigret: ";
MyTree.PrintName("MAIGRET");
cout << endl << "List of names as stored in the tree:\n" << endl;
MyTree.DiagnosticInOrder();
// cout << "Continue? ";
// cin >> response;
cout << "\nIn Order: \n\n";
MyTree.PrintTree();
return 0;
}
void Tree::DiagnosticInOrder()
{
DiagInOrderTraversal(root, 0);
}
Include all this in a program (called tree.cpp), adding missing routines..