gpt4 book ai didi

c - 为什么即使在函数返回后对单个指针所做的更改仍然存在

转载 作者:太空宇宙 更新时间:2023-11-04 01:59:59 25 4
gpt4 key购买 nike

我正在阅读以下文章。 Add greater values of every node

所以我对函数 void modifyBSTUtil(struct node *root, int *sum)

有疑问

返回,为什么它所做的更改会保留在树中。

1.我们没有使用双指针

2.根也不是全局的

3.我们不返回地址

谁能解释为什么会这样?

代码

void modifyBSTUtil(struct node *root, int *sum)
{
// Base Case
if (root == NULL) return;

// Recur for right subtree
modifyBSTUtil(root->right, sum);

// Now *sum has sum of nodes in right subtree, add
// root->data to sum and update root->data
*sum = *sum + root->data;
root->data = *sum;

// Recur for left subtree
modifyBSTUtil(root->left, sum);
}

调用:修改BSTUtil(root, &sum)

插入函数

struct node* insert(struct node* node, int data)
{
/* If the tree is empty, return a new node */
if (node == NULL) return newNode(data);

/* Otherwise, recur down the tree */
if (data <= node->data)
node->left = insert(node->left, data);
else
node->right = insert(node->right, data);

/* return the (unchanged) node pointer */
return node;
}

我们需要在插入函数的情况下返回地址以使更改永久化,为什么不返回这里??

最佳答案

这是有效的,因为在这个例子中节点之间的链接没有改变。只有它们存储的值(->data)。

关于c - 为什么即使在函数返回后对单个指针所做的更改仍然存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28601397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com