【发布时间】:2013-11-29 04:21:05
【问题描述】:
我注意到,每次我在二叉搜索树类中删除一个节点时,它都会简单地将其替换为 0。换句话说,假设我有一个节点树,当在预购遍历中打印时会产生“五、三、四、六。”假设我调用 remove 函数来删除 3(这个函数所做的就是沿着树搜索,直到找到所需的节点,然后在该节点上调用 delete)。当我使用预订遍历再次打印时,出现的是“5、0、4、6”。根据我对删除的了解,它释放了已使用的内存,因此指针现在指向任何内容。它不应该只是给出一个分段错误而不是打印一个 0 吗?
【问题讨论】:
-
代码,否则从未发生过
-
您实际上是从树中删除节点还是只是在其上调用 delete?
标签: c++ pointers segmentation-fault delete-operator dynamic-allocation