#include
#include
#include
#include
#include
#include
class Node
{
public:
/* constructors */
Node();
Node(char newChar, unsigned short newDepth);
/* accessors */
char getChar() const {return character;}
unsigned short getDepth() const {return depth;}
bool isRoot() const {return (character == '\0');}
/* node accessors */
Node *getLeft() const {return left;}
Node *getCenter() const {return center;}
Node *getRight() const {return right;}
/* mutators */
bool setChar(char newChar);
bool setDepth(unsigned short newDepth);
/* node mutators */
void setLeft(Node *newLeft) {left = newLeft;}
void setCenter(Node *newCenter) {center = newCenter;}
void setRight(Node *newRight) {right = newRight;}
const static unsigned short MAX_DEPTH = 7;
private:
char character; /* '\0' if root node */
unsigned short depth;
Node *left, *center, *right;
};
class Tree
{
public:
/* constructors */
Tree();
Tree(unsigned int newNumber);
~Tree();
/* maintenance operations */
void clear();
void expand();
void expand(Node *start);
bool isEmpty() const;
void print(std::ostream &output) const;
void print(Node *start, std::string word, std::ostream &output) const;
/* accessor/mutator for the phone number */
unsigned int getNumber() const {return phoneNumber;}
bool setNumber(unsigned int newNumber);
private:
enum directions {LEFT, CENTER, RIGHT};
char translate(unsigned short number, unsigned short direction);
unsigned short digit(unsigned short index);
void remove(Node *start);
unsigned int phoneNumber;
Node *root;
};
int main(int argc, char **argv)
{
unsigned int currNumber = 2222222; /* smallest number possible */
unsigned int highestNumber = pow(10.0, Node::MAX_DEPTH);
std::ofstream fd;
Tree t;
/* check for operator error */
if (argc < 2)
{
std::cerr << "Usage: " << argv[0] << "
               (
geocities.com/timessquare/alley)                   (
geocities.com/timessquare)