- Mar 26, 2001
- 431
- 0
- 71
if have have these classes and want to insert intergers into the binary tree which function would i call and what would it look like
in other words
how would i declare a new tree in my main program
and what would the function look like to insert some integers in itt?
include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <cassert>
using namespace std;
class TreeNode {
public:
typedef int datatype;
TreeNode(datatype x=0, TreeNode *left=NULL,TreeNode *right=NULL)
{
data=x;
this->left=left;
this->right=right;
};
datatype getData( )
{
return data;
};
TreeNode *getLeft( )
{
return left;
};
TreeNode *getRight( )
{
return right;
};
void setData(datatype x)
{
data=x;
};
void setLeft(TreeNode *ptr)
{
left=ptr;
};
void setRight(TreeNode *ptr)
{
right=ptr;
};
private:
datatype data; // different data type for other apps
TreeNode *left; // the pointer to left child
TreeNode *right; // the pointer to right child
};
class Tree {
public:
typedef int datatype;
Tree(TreeNode *rootPtr=NULL)
{
this->rootPtr=rootPtr;
};
TreeNode *search(datatype x);
bool insert(datatype x);
TreeNode * remove(datatype x);
TreeNode *getRoot()
{
return rootPtr;
};
Tree *getLeftSubtree();
Tree *getRightSubtree();
bool isEmpty(){return rootPtr == NULL;};
private:
TreeNode *rootPtr;
};
bool Tree::insert(datatype x)
{
if (isEmpty())
{
rootPtr = new TreeNode(x);
return true;
}
TreeNode *p=rootPtr;
while (p != NULL )
{
datatype a = p->getData();
if (a == x)
return false; // data is already there
else if (x<a)
{
if (p->getLeft() == NULL )
{ // place to insert
TreeNode *newNodePtr= new TreeNode(x);
p->setLeft(newNodePtr);
return true;
}
else
p=p->getLeft();
}
else
{ // a>a
if (p->getRight() == NULL )
{ // place to insert
TreeNode *newNodePtr= new TreeNode(x);
p->setRight(newNodePtr);
return true;
}
else p=p->getRight();
}
}
};
TreeNode * Tree::search(datatype x)
{
if (isEmpty())
{
return NULL;
}
TreeNode *p=rootPtr;
while (p != NULL)
{
datatype a = p->getData();
if (a == x)
return p;
else if (x<a)
p=p->getLeft();
else
p=p->getRight();
}
return NULL;
};
thanks
in other words
how would i declare a new tree in my main program
and what would the function look like to insert some integers in itt?
include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <cassert>
using namespace std;
class TreeNode {
public:
typedef int datatype;
TreeNode(datatype x=0, TreeNode *left=NULL,TreeNode *right=NULL)
{
data=x;
this->left=left;
this->right=right;
};
datatype getData( )
{
return data;
};
TreeNode *getLeft( )
{
return left;
};
TreeNode *getRight( )
{
return right;
};
void setData(datatype x)
{
data=x;
};
void setLeft(TreeNode *ptr)
{
left=ptr;
};
void setRight(TreeNode *ptr)
{
right=ptr;
};
private:
datatype data; // different data type for other apps
TreeNode *left; // the pointer to left child
TreeNode *right; // the pointer to right child
};
class Tree {
public:
typedef int datatype;
Tree(TreeNode *rootPtr=NULL)
{
this->rootPtr=rootPtr;
};
TreeNode *search(datatype x);
bool insert(datatype x);
TreeNode * remove(datatype x);
TreeNode *getRoot()
{
return rootPtr;
};
Tree *getLeftSubtree();
Tree *getRightSubtree();
bool isEmpty(){return rootPtr == NULL;};
private:
TreeNode *rootPtr;
};
bool Tree::insert(datatype x)
{
if (isEmpty())
{
rootPtr = new TreeNode(x);
return true;
}
TreeNode *p=rootPtr;
while (p != NULL )
{
datatype a = p->getData();
if (a == x)
return false; // data is already there
else if (x<a)
{
if (p->getLeft() == NULL )
{ // place to insert
TreeNode *newNodePtr= new TreeNode(x);
p->setLeft(newNodePtr);
return true;
}
else
p=p->getLeft();
}
else
{ // a>a
if (p->getRight() == NULL )
{ // place to insert
TreeNode *newNodePtr= new TreeNode(x);
p->setRight(newNodePtr);
return true;
}
else p=p->getRight();
}
}
};
TreeNode * Tree::search(datatype x)
{
if (isEmpty())
{
return NULL;
}
TreeNode *p=rootPtr;
while (p != NULL)
{
datatype a = p->getData();
if (a == x)
return p;
else if (x<a)
p=p->getLeft();
else
p=p->getRight();
}
return NULL;
};
thanks