Pre oder traversal in tree

Im getting wrong output in the traversal very big number is coming can someone tell me how to fix this issue .im attaching code here
#include
using namespace std;

class Node
{
public:
int data;
Node * left;
Node * right;
Node(int d)
{
int data= d;
left=NULL;
right=NULL;

}

};
Node* buildTree(){
int d;
cin>>d;
if(d==-1)
{
return NULL;
}
Node *n=new Node(d);
n->left=buildTree();
n->right=buildTree();
return n;

}
void preOrder(Node* root)
{
if(root==NULL)
{
return;
}
cout<data<<" &"<<endl;
preOrder(root->left);
preOrder(root->right);

}

int main()
{
cout<<“hello”<<endl;
Node * root=buildTree();
preOrder(root);
return 0;
}