在AVL树中按字母顺序排列字符串的麻烦

时间:2013-11-18 05:51:32

标签: c++ tree

我很无望。我在过去的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());
}
}

0 个答案:

没有答案