в бинаром дереве поиска правое значение больше текущего, а левое значение меньше текущего, так же нет повторений. чтобы проверить что бинарное дерево является бинарным деревом поиска тебе надо написать рекурсивный алгоритм который проверяет эти три условия. на си я бы сделал это так:
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 перед название структуры без тайпдефа.