在用C++实现二叉查找树delete操作时出现了奇怪的行为,要被删除掉的节点并没有被删除,而是值变成了0,一番查找确认算法本身没问题,最后发现是向函数传递参数时出现的错误,函数应该接收的是指针引用或者指针的指针,但我的实现接收的是指针的值,先贴正确代码
class TreeNode
{
public:
TreeNode(int v): val(v), left(NULL), right(NULL){
}
int val;
TreeNode *left, *right;
};
bool Delete(TreeNode * &root)
{
TreeNode *temp = NULL;
if (!root->left)
{
temp