Помогите разобраться с заданием? двоичного дерева

bereg101

Участник
Автор темы
55
0
Помогите решить задание. Дали 10 штук, вроде все понятные, а это ни капли.
Кто может объяснить простыми словами что тут хотят? Я даже язык C не знаю и пример кода понять не могу

Дан указатель на корень двоичного дерева
Опишите словами алгоритм, который вернёт True если дерево является двоичным деревом поиска и False если не является
Вершина дерева содержит целочисленное значение (value) и два указателя на поддеревья (left и right).
В виде структуры на языке C это можно записать так:
Пример кода:
struct node {
 int value;
 node* left;
 node* right;
}
 

sc6ut

неизвестный
Модератор
382
1,075
в бинаром дереве поиска правое значение больше текущего, а левое значение меньше текущего, так же нет повторений. чтобы проверить что бинарное дерево является бинарным деревом поиска тебе надо написать рекурсивный алгоритм который проверяет эти три условия. на си я бы сделал это так:
C:
struct node {
    int val;
    struct node *left;
    struct node *right;
};

bool is_binary_search_tree( struct node *root ) {
    if ( !root || ( !root->left && !root->right ) ) return true;
    if ( root->left && root->left->val >= root->val ) return false;
    if ( root->right && root->right->val <= root->val ) return false;
    return is_binary_search_tree( root->left ) && is_binary_search_tree( root->right );
}
не по теме но твоя структура записана на c++, а не на си, так как в си надо юзать struct перед название структуры без тайпдефа.