在BST中找到第二个密钥
Find 2nd Key in BST
我昨天发布了一些东西,并得到了一些入门帮助,我觉得我现在快到了。 我创建了一个BST,主键作为名称,辅助键作为该人的权重。我已经设法完成了我需要的一切,除了搜索最低权重(辅助键)。 我搜索最小权重的方法是预序遍历,它将所有权重正确输出到屏幕。 现在确定哪个是最低的技术是什么? 我已经尝试了一些不同的 if 语句,并创建了一个 minwt int,但我没有运气开始工作(我认为这与递归有关)。 无论如何,这是代码。 像往常一样,任何帮助都非常感谢。 谢谢。
#include <iostream>
using namespace std;
class tNode
{
public:
string name;
int wt;
tNode *left, *right;
tNode()
{
left = right = 0;
}
tNode(string name, int wt, tNode *l = 0, tNode *r = 0)
{
this->name = name;
this->wt = wt;
left = l;
right = r;
}
};
class bSTree
{
public:
tNode *root;
bSTree()
{
root = 0;
}
bool add(string name, int wt)
{
tNode *temp = root, *prev = 0;
while (temp != 0)
{
prev = temp;
if (name < temp->name)
{
temp = temp->left;
}
else
{
temp = temp->right;
}
}
if (root == 0)
{
root = new tNode(name, wt);
}
else if (name < prev->name)
{
prev->left = new tNode(name, wt);
}
else if (name > prev->name)
{
prev->right = new tNode(name, wt);
}
else
{
return false;
}
return true;
}
void searchWeight(tNode* temp)
{
// DETERMINE LOWEST WEIGHT CONTAINED IN TREE
if (temp != 0)
{
cout << temp->wt << endl;
searchWeight(temp->left);
searchWeight(temp->right);
}
}
};
您需要一些临时变量来保存最低权重和关联的键。 它们需要在searchWeight()
函数范围之外可访问。 例如:
#include <iostream>
using namespace std;
int lowest_weight = 999999; // Something sufficiently high
string lowest_weight_key;
class tNode
{
/*...*/
void searchWeight(tNode* temp)
{
// DETERMINE LOWEST WEIGHT CONTAINED IN TREE
if (temp != 0)
{
// if temp->wt is lower than lowest weight
// set lowest_weight equal to temp->wt
// and set lowest_weight_key equal to temp->name
cout << temp->wt << endl;
searchWeight(temp->left);
searchWeight(temp->right);
}
}
};
现在,只需在调用searchWeight()
后打印出lowest_weight
和lowest_weight_key
的值。
相关文章:
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 允许从 std::map 的密钥窃取资源?
- 我有两个类需要在同一 cpp 文件中相互引用,但第一个类无法识别第二个类类型的对象
- 如何在精灵表上的两个不同部分之间来回切换,同时用户仍使用 SFML 持有密钥
- 如何以编程方式从PKCS7中提取CA、多个CA和公共证书/密钥
- 当第一个密钥更改时,将对持续的映射保持持续
- 数据架构,可快速访问多个密钥或密钥和优先级
- C :带有两个相关密钥的快速结构
- BOOST Property_Tree:每个密钥的多个值
- 好的哈希函数,2个整数用于一个特殊的密钥
- std::unordered_map和由多个元素构建的密钥
- 在BST中找到第二个密钥
- 尝试多个密钥进行 Caesar 密码解密从密钥 9 而不是 1 开始
- 三重DES加密需要多少个密钥?
- 如何为多个密钥类型专门化std映射
- Blowfish加密/解密只使用密钥的第一个字符
- 无序映射只能使用16个字符串来最大化唯一的密钥
- 缓存多个密钥哈希
- 添加约10000个密钥后,无序映射中的分割错误
- 为什么只接受我密钥的前两个字符?c++