Dado un árbol binario de búsqueda y un entero K, me gustaría encontrar el elemento más grande menor K.Para hallar más grande elemento más pequeño que K en un BST
En el árbol de abajo,
for K = 13, result = 12
for K = 10, result = 8
for K = 1 (or) 2, result = -1
10
5 12
2 8 11 14
Intenté la siguiente lógica. Pero, ¿hay alguna forma mejor de hacer esto?
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;
}
ve bien para mí. –
Debe terminar si encuentra K-1. No puedo decir desde tu código si estás haciendo esto (aunque puede ser obvio, no conozco C++). – PengOne
Defina "mejor". ¿Más eficiente? ¿Más preciso? –