找到一个元素的值,该元素的键是小于给定键的所有键中最大的键

时间:2013-12-17 20:59:38

标签: c++ binary-search-tree

我知道此类问题之前已经得到解答,但我无法理解为什么我的代码无效。

添加到标题:如果没有小于给定键的键,则抛出异常。

上下文:我正在使用二叉树实现地图。

实现:

template<typename Key, typename Value>
Value BinStabloMapa<Key, Value>::prviManjiHelp(BSNode<Key, Value> *node, const Key&     key) const{   


if(node->_key > key){
    if(node->_left == 0) return node->_value;
return prviManjiHelp(node->_left, key);
}
else if(node->_key < key){
    if(node->_right == 0) return node->_value;
return prviManjiHelp(node->_right, key);
}
else if(node->_key == key){
    if(node->_left == 0) throw "JOK";
return node->_left->_value;
}
}



template<typename Key, typename Value>
Value BinStabloMapa<Key, Value>::prviManji(const Key& key) const {
if(_root == 0) throw "Map is empty";
return prviManjiHelp(_root, key);
}

这是文字示例:

BinStabloMapa <int, int> m;
m[5] = 5;
m[3] = 3;
m[8] = 8;
m[1] = 1;
m[2] = 2;
m[6] = 6;
cout << m.prviManji(5) << " " << m.prviManji(6);
cout << " " << m.prviManji(3) << " ";
cout << m.prviManji(12);

它应输出3,5,2,8,但它会抛出异常。我试图找到原因,我已经确定在node-&gt; _key等于key的情况下会发生这种情况。

感谢。

0 个答案:

没有答案