Binary Tree Insert & Find

I'm writing a simple program which make Binary Search Tree from some int array and then search for specified value.

Code is:

Code:

`#include <iostream>`

using namespace std;

class BinaryTree

{

typedef struct NODE

{

int data;

struct NODE* left;

struct NODE* right;

}node;

node *head;

node* InsertPrivate(node*,int);

node* FindPrivate(node*,int);

void Delete(node*);

public:

BinaryTree();

~BinaryTree();

void Insert(int);

node* Find(int);

};

BinaryTree::BinaryTree():head(0){}

BinaryTree::~BinaryTree(){Delete(head);}

void BinaryTree::Insert(int data)

{

head=InsertPrivate(head,data);

}

BinaryTree::node* BinaryTree::InsertPrivate(node* root,int data)

{

if(!root)

{

root=new node;

root->data=data;

root->left=0;

root->right=0;

return root;

}

if(data<=root->data)

root->left=InsertPrivate(root->left,data);

else

root->right=InsertPrivate(root->right,data);

return root;

}

BinaryTree::node* BinaryTree::FindPrivate(node*root,int data)

{

if(!root)

{

return root;

}

if(root->data==data)

return root;

else

{

if(data<root->data)

root=FindPrivate(root->left,data);

else

root=FindPrivate(root->right,data);

}

return root;

}

BinaryTree::node* BinaryTree::Find(int data)

{

node *cur=FindPrivate(head,data);

if(!cur)

cout<<"No element"<<endl;

else

cout<<"Success!"<<endl;

return cur;

}

void BinaryTree::Delete(node *current)

{

if(current !=0)

{

Delete(current->left);

Delete(current->right);

delete current;

}

}

int main()

{

int array[]={5,1,8,2,0,4,7,1,9,2};

BinaryTree b;

for(int i=0;i<10;i++)

b.Insert(array[i]);

b.Find(19);

}

and it seems to work fine. However, I had difficulties to make it work properly. I was getting strange errors when trying to write

node* BinaryTree::FindPrivate(node*root,int data)

and not

BinaryTree::node* BinaryTree::FindPrivate(node*root,int data)

I assume that is because of node is declared within class.

If you can examine this code and give some advices how to make it simpler?

Because of recursion in class I had to write two versions of functions Find and Insert

maybe there is a better way.

Thanks for your help