Бинарное дерево поиска. С++. Рекурсия. Вывод нужных элементов
У меня есть вот такая задача: дано бинарное дерево поиска (элементы числа). Для каждого(ранее переданного) узла нужно вывести сперва всех непарных детей, а затем парных. Вот мой код
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);
}
В своем коде вы проверяете значение одного узла, а выводите значение другого. К тому же логика рекурсивного вызова не верна...