Учитывая двоичное дерево поиска и целое число K, я хотел бы найти самый большой элемент меньше, чем K.
В дереве ниже,
for K = 13, result = 12
for K = 10, result = 8
for K = 1 (or) 2, result = -1
10
5 12
2 8 11 14
Я попробовал следующую логику. Но есть ли лучший способ сделать это?
int findNum(node* node, int K)
{
if(node == NULL)
{
return -1;
}
else if(K <= node->data)
{
return findNum(node->left,K);
}
else if(K > node->data)
{
int t = findNum(node->right,K);
return t > node->data ? t : node->data;
}
return -1;
}
int
в его коде. - person PengOne   schedule 13.06.2011K-1
нигде в коде не встречается и это C, а не Malbolge, мне трудно понять, что нельзя сказать, что такого теста нет в приведенном выше коде. - person Jim Balter   schedule 13.06.2011return -1
? Может ли он когда-нибудь добраться туда? А над ним можноreturn t > node->data ? ...
поменять наreturn t == -1 ? ...
, эффект тот же, но понятнее что происходит. - person Jirka   schedule 03.07.2011