【发布时间】:2013-11-08 18:56:27
【问题描述】:
我昨天发布了一些内容并得到了一些帮助以开始使用,我觉得我现在差不多了。我创建了一个 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);
}
}
};
【问题讨论】:
-
如果你的遍历工作正常,那么你就在那里 99%。您需要一个变量来保存最低权重和最低键 - 仅在树中的对象满足适当条件时设置它们,然后在遍历完成时输出它们。
-
谢谢乍得,这就是我一直在尝试的,但它不能正常工作。不过,我会继续搞砸它,现在我知道我在正确的轨道上。
-
我已经提供了一个答案,其中包含有关如何实施的提示。
标签: c++ data-structures binary-search-tree