Notice the //, the program stops taking input and that is the main problem. 
root->cand = data; 
Here is the full code:
#include <bits/stdc++.h>
 using namespace std;
 struct node
{
    int cand;
    node *left;
    node *right;
};
class candies
{
    node *root;
public:
    candies();
    int add(int);
    int check();
};
candies::candies()
{
    root = NULL;
}
int candies::add(int data)
{
    if (root == NULL)
    {
        root->cand = data; //code stops here
        root->left = NULL;
        root->right = NULL;
    }
    else
    {
        node *temp = root;
        while (temp != NULL)
        {
            if (data < temp->cand)
            {
                temp = temp->left;
            }
            else
            {
                temp = temp->right;
            }
        }
        temp = new node;
        temp->cand = data;
        temp->left = temp->right = NULL;
    }
    return 1;
}
int candies::check()
{
    node *temp;
    temp = root;
    int data;
    cin >> data;
    while (temp != NULL)
    {
        if (temp->cand == data)
        {
            cout << "YES\n";
            return 1;
        }
        else if (data < temp->cand)
            temp = temp->left;
        else if (data > temp->cand)
            temp = temp->right;
    }
    cout << "NO\n";
    return 0;
}
int main()
{
    candies c;
    int n;
    cin >> n;
    while (n--)
    {
        int data;
        cin >> data;
        c.add(data);
    }
    c.check();
}
 
     
    