Бинарное дерево поиска. С++. Рекурсия. Вывод нужных элементов

У меня есть вот такая задача: дано бинарное дерево поиска (элементы числа). Для каждого(ранее переданного) узла нужно вывести сперва всех непарных детей, а затем парных. Вот мой код

    void printtree(TTree *node){
    cout <<"Number ";
    cout << node->data << " ";
    if(node->left&&node->left->data%2!=0){ 
        cout<<"\nOdd number of element "<<node->data<<endl;
        printtree(node->left);
    }
    if(node->right&&node->right->data%2==0){
        cout<<"\nEven number of element "<<node->data<<endl;
         printtree(node->right);
}
}

Задача исполняется не совсем верно, думаю я как-то не так использую рекурсивный вызов.Помогитее пожалуйста исправить


Ответы (2 шт):

Автор решения: Олег Турик
 if(node->left&&node->left->data%2==0){ 
        cout<<"\nEven number of element "<<node->data<<endl;
        printtree(node->left);
    }
  if(node->right&&node->right->data%2!=0){
        cout<<"\nOde number of element "<<node->data<<endl;
         printtree(node->right);
→ Ссылка
Автор решения: AR Hovsepyan

По какому порядку вы хотите вывести _ не понятно. Полагаю, что так:

void printtree(TTree *node){
    if(!node) return;
    printtree(node->left);        
    if(node->data & 1)         
        cout<<"Odd number of element ";       
    else    
        cout<<"Even number of element ";
    cout << node->data << endl;         
    printtree(node->right);
}

В своем коде вы проверяете значение одного узла, а выводите значение другого. К тому же логика рекурсивного вызова не верна...

→ Ссылка