c++ - 修改二叉树的元素c++

标签 c++ binary-tree

我有一个关于修改二叉树元素的问题。这是我得到的错误: 访问冲突读取位置 0x00000018。 我想我正在访问一个空指针,但我不知道如何解决这个问题。

这是我使用的代码:

void modifyStatus(nod* root)
{

if (root->info.st == done)
    root->info.st = reachedDest;
    modifyStatus(root->st);
    modifySatus(root->dr);
}

我必须指定“done”和“reachedDest”是枚举的元素。

最佳答案

I think I'm accessing a null pointer but I don't know how to solve the problem.

在访问它之前检查指针是否为 NULL:

void modifyStatus(nod* root) {
    if (!root) {
        return;
    }
    ...
}

请注意,类似于 modifySatus(root->st); 的调用看起来像 C,而不像 C++。在您可以控制 nod 类的情况下,您应该考虑将 modifySatus 设为成员函数:

root->modifyStatus();

关于c++ - 修改二叉树的元素c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31002649/

相关文章:

c++ - 按值或 C++11 通用引用传递仿函数?

C++ 使用 vector 作为类实例的静态容器

c++ - 如何在参数重载决策中禁用指向 void 指针的隐式转换?

algorithm - 查找 BST 中最多进行 h + 1 次比较的元素

java - 还有其他类型的 JTree 吗?

c - 二叉树和 doubleTree() 函数

C++:如何从函数返回 shared_ptr

algorithm - 对二叉树中的元素进行排序

java - 如何创建二叉树 [3,9,20,null,null,15,7] 以便将其传递给 levelOrder 方法?

c++ - if condition 返回 true 时内部函数,但不进入 body