我知道此类问题之前已经得到解答,但我无法理解为什么我的代码无效。
添加到标题:如果没有小于给定键的键,则抛出异常。
上下文:我正在使用二叉树实现地图。
实现:
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的情况下会发生这种情况。
感谢。