抛出的例外:阅读访问违规.树是nullptr.如果有此例外的处理程序,则可以安全地继续该程序

Unhandled exception thrown: read access violation. Tree was nullptr. If there is a handler for this exception, the program may be safely continued

本文关键字:程序 处理 继续 安全 如果 读访问 nullptr 树是      更新时间:2023-10-16

我正在尝试获取C 中所有整数的总和,但是每当我运行程序时,它都会随着此错误而破裂:

丢弃的例外:阅读访问违规。树是nullptr。如果有此例外处理程序,则可以安全地继续该程序

这是我的功能:

int sigma(Node<int> *Tree)
{
    int sum = 0;
    if (Tree->item == NULL)
    {
        return 0;
    }
    else 
    {
        sum = sum + sigma(Tree->left);
        sum = Tree->item;
        sum = sum + sigma(Tree->right);
    }
    return sum;
}

这是我的标题文件:

template <typename T>
class Node
{
public:
    Node(T itm, Node *lft, Node* rht);
    Node(T itm); // for creating a leaf node 
    ~Node();
    void printTree();
    bool searchTree(T key);
    bool search(T word);
    int depth(Node *tree);
    T item;
    Node *left, *right;
};
template <typename T>
Node<T>::Node(T itm)
{
    item = itm;
    left = nullptr;
    right = nullptr;
}
template <typename T>
Node<T>::Node(T itm, Node *lft, Node *rht)
{
    left = lft;
    right = rht;
    item = itm;
}
template <typename T>
Node<T>::~Node()
{
    delete[] left, right;
}

有人对我如何解决此问题有任何想法吗?

添加检查树== null在开始

int sigma(Node<int> *Tree)
{
    int sum = 0;
    if (Tree == NULL || Tree->item == NULL)
    {
        return 0;
    }
    else 
    {
        sum = sum + sigma(Tree->left);
        sum = sum + Tree->item;
        sum = sum + sigma(Tree->right);
    }
    return sum;
}