gpt4 book ai didi

c++ - 在 BST 中找到第二个键

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:52 25 4
gpt4 key购买 nike

我昨天发布了一些东西并得到了一些帮助开始,我觉得我现在差不多了。我创建了一个 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_weightlowest_weight_key 的值。

关于c++ - 在 BST 中找到第二个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19866519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com