проблема состоит в следующем:
Бинарное дерево
называется сортированным, если для
любой вершины все ее левое поддерево
содержит значения, меньшие или равные
значению этой вершины, а правое поддерево
– большие или равные. Проверить, является
ли заданное дерево сортированным.
надо проверить сортированость введенного из файла дерева. буду благодарен за помощь =)
Примечание:
@mutant я так думаю, что получится нечто подобное моему коду, но написанному немного по-другому:
bool checkSortRecurs( tItem* item )
{
bool res = true;
if( item->lChild != NULL ) //if left child of the current root node is not NULL
{
if( item->lChild->cData <= item->cData ) //compare them
{
res = checkSortRecurs( item->lChild ); //do it again
if( res == false )
return false;
}else
{
return false; //else statement is broken
}
}
res = true;
if( item->rChild != NULL ) //if left child of the current root node is not NULL
{
if( item->rChild->cData >= item->cData ) //compare them
{
res = checkSortRecurs( item->rChild ); //do it again
if( res == false )
return false;
}else
{
return false; //else statement is broken
}
}
return res;
}
Примечание:
вопрос решен кодом в несколько строчек:
если sorted(дерево.левое) and sorted(tree.r)
то есть:
boolean sorted(tree):
if (tree.left is leaf)
return tree.value >= tree.leaf.value
if (tree.right is lear)
return tree.value <= tree.right.value
return sorted (tree.left) and sorted.(tree.right) - это суть рекурсии;
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.