二叉搜索树-按顺序遍历

Binary Search Tree - In-order Traversal

本文关键字:顺序 遍历 搜索树      更新时间:2023-10-16

我正在尝试使用BST制作一个填字游戏程序,我目前有以下单词插入到树中:

word, will, wyr, wale, will, apple, abs, wack(按此顺序插入)

但是每次我在visual studio中调试程序时,我都会得到一个错误

Exception thrown at 0x008DE28C in AVLBSTcrosswordhunter.exe: 0xC0000005: Access violation writing location 0x0000001C.

然而,当跟踪变量时,我遍历的变量从未设置为1,所以我不退出这个while循环,错误发生在里面,我只是不确定在哪里和为什么。

while (!traversed)
{
    if (temp != NULL)
    {
        if (temp->word.substr(0, sub_num) == value.substr(0, sub_num))
        {
            count++;
        }
        s.push(temp);
        temp = temp->left;
    }
    else
    {
        if (!s.empty())
        {
            temp = s.top();
            s.pop();
            temp = temp->right;
        }
        if (s.empty())
        {
            traversed = 1;
        }
    }
}

澄清一下,我正在搜索的单词是"w***"("*"是通配符),所以if语句检查指针temp是否有子字符串w,如果声音增加计数,所以我可以发送一个数字回来多少匹配通配符搜索。

同样,temp被设置为while循环之前的根(单词)。

谢谢你能提供的任何帮助!

似乎我在匆忙中创建了两个遍历变量和两个堆栈变量,现在似乎可以工作了!