鉴于二叉搜索树和一个整数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