C++:删除节点并返回其右子节点的程序:

问题描述 投票:0回答:1

我试图解决删除 BST 中节点的问题,并看到一个奇怪的输出。在节点只有右子节点的情况下,我试图删除该节点并返回其右子节点。不知何故,下面的两个代码都给出了正确的结果,尽管在我看来只有代码 1 应该有效,因为我们正在尝试访问已删除的节点。 有人可以告诉我为什么会发生这种情况吗?

cpp 代码1:

Node* temp = root->right;
delete root;
return temp;

代码2:

Node* temp = root;
delete temp;
return root->right;
c++ binary-tree binary-search-tree
1个回答
1
投票

取消引用已删除指针的结果是未定义的。这意味着任何事情都可能发生,包括让程序看起来有效。

不承诺会抛出异常,或显示错误消息。

© www.soinside.com 2019 - 2024. All rights reserved.