为了使问题简化,假如删除的是二叉树的叶子结点,
void delete1(node* &root){ if (root->left == NULL&&root->right == NULL) root = NULL; }
delete函数是这样的。现在假设你删除root的左结点,root已经分配空间。delete1(root->left)是可以删除的。但如果这样,node* temp=root->left;
delete1(temp);是删除不了的,但可以改变结点的信息val。
删除的函数加上&可以完成对指针自身的修改,不加&也可以完成对指针指向的地址的内容进行修改。
void delete1(node* root){ if (root->left == NULL&&root->right == NULL) root->val = 2;}