鑑於二叉搜索樹和一個整數K,小,我想找到最大的元素比K.要找到最大元素於K在BST
少在下面的樹,
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;
}
我看不錯。 – 2011-06-13 18:26:48
如果您發現K-1,您應該終止。我不能從你的代碼中知道你是否正在做這件事(儘管可能很明顯,我不知道C++)。 – PengOne 2011-06-13 18:27:56
請定義「更好」。更高效?更準確? – 2011-06-13 18:30:07