关于二叉树结点删除引出的小问题

为了使问题简化,假如删除的是二叉树的叶子结点,

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;
}

猜你喜欢

转载自www.cnblogs.com/legendcong/p/9430926.html