PDA

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


bereg101
16.03.2022, 19:39
Помогите решить задание. Дали 10 штук, вроде все понятные, а это ни капли.

Кто может объяснить простыми словами что тут хотят? Я даже язык C не знаю и пример кода понять не могу

Дан указатель на корень двоичного дерева

Опишите словами алгоритм, который вернёт True если дерево является двоичным деревом поиска и False если не является

Вершина дерева содержит целочисленное значение (value) и два указателя на поддеревья (left и right).

В виде структуры на языке C это можно записать так:

Пример кода:






struct
node
{
int
value
;
node
*
left
;
node
*
right
;
}

F0RQU1N and
17.03.2022, 07:22
Нихуя не понятно

bereg101
17.03.2022, 13:19
Нихуя не понятно


вот поэтому я здесь)

sc6ut
20.03.2022, 13:41
в бинаром дереве поиска правое значение больше текущего, а левое значение меньше текущего, так же нет повторений. чтобы проверить что бинарное дерево является бинарным деревом поиска тебе надо написать рекурсивный алгоритм который проверяет эти три условия. на си я бы сделал это так:

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

val
)
return
false
;
return
is_binary_search_tree
(
root
->
left
)
&&
is_binary_search_tree
(
root
->
right
)
;
}




не по теме но твоя структура записана на c++, а не на си, так как в си надо юзать struct перед название структуры без тайпдефа.