我很无望。我在过去的7个小时里一直致力于这个项目,这个社区非常精彩。我有一个最后的请求帮助,然后我保证我会让你一个人待一会儿。
分配是创建一个AVL树,它能够按字母顺序排列文本文件并计算每个单词的实例。我有它到半字母版本的地方。通常会让它非常接近,有几个奇怪的球。我知道这与我的轮换有关,但我真的无法弄清楚我哪里出错了。相关的代码段如下。一如既往,你们是最好的。
主要方法:
if (myfile.is_open())
{
while (getline(myfile, line, ' '))
{
string* word = new string(removeSymbols(line));
TreeNode<string>* wordNode = new TreeNode<string>(word);
myAVLTree->insert(wordNode);
}
myfile.close();
}
else cout << "Unable to open file";
myAVLTree->rotateRight(wordNode); // I'm thinking part of the problem is here.
myAVLTree->getLeftChild(testNode1); // Can't figure out how else you would do it.
myAVLTree->printTree();
旋转树的方法。也向左旋转。
void AVLTree<type>::rotateRight(TreeNode<type>* node)
{
if (node->getParent() == root)
{
root->setLeft(node->getRight());
root->setParent(node);
node->setRight(root);
root = node;
root->setParent(nullptr);
}
else
{
node->getParent()->getParent()->setLeft(node);
node->getParent()->setLeft(node->getRight());
node->setRight(node->getParent());
node->setParent(node->getParent()->getParent());
node->getRight()->setParent(node);
}
}
最后,我认为预订搜索应该返回正确的列表,我是对的吗?
void AVLTree<type>::preOrder(TreeNode<type>* temp)
{
if (temp != nullptr)
{
preOrder(temp->getLeft());
cout << *temp->getValue() << " " << temp->getWordCount() << endl;
nodeCount++;
preOrder(temp->getRight());
}
}