Решение задач на си ++

Снимertrок
Ничего не происходит, подскажите.

Node *find(Node *root, /*тут тип значения*/ value) {
    while (root) { // пока наше дерево не равно нулю(вернее пока не равно пустоте)
        if (root->data > value) {// если наше значение меньше, идем влево
            root = root->left;
            continue;
        } else if (root->data > value) {если наше больше, идем вправо
            root = root->right;
            continue;
        } else {//если равны, то мы нашли ответ
            return root;
        }
    }
    return NULL; // если мы дошли жо сюда, то в дереве элемента нет, вернем пустоту
}

А что должно?
Эта функция не выводит ничего на экран и т.д., только возвращает найденный элемент или NULL.
Вывод должен быть где-то снаружи после её вызова.

И что-то это совсем не похоже на C# ))

Помогите нормально оформить

Node *find(Node *root, int val)
{
    if (root == NULL)
    {
          return;
    }
    if(root->data == val)return root; // вернем дерево если нашли значение
    find(root->left);   //рекурсивный вызов левого поддерева
    find(root->right);  //рекурсивный вызов правого поддерева
}