gpt4 book ai didi

c - 为什么BST插入末尾需要返回?

转载 作者:行者123 更新时间:2023-11-30 19:32:30 25 4
gpt4 key购买 nike

我不明白为什么这里需要“返回节点”?是从堆栈顶部弹出激活记录还是什么??

struct node* insert(struct node* node, int key)
{
if (node == NULL) return newNode(key);

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

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

最佳答案

是的,你可以这么说。但更一般地说,每当您的程序创建一个节点(在合适的位置)时,您都可以这样说,它需要将自身附加到树上。现在要做到这一点,他们需要了解新节点。这就是返回的帮助所在。

现在想想,要做到这一点,您必须返回struct node*。你宣布了​​。但是您是否注意到,从逻辑上讲,只有当您需要了解新创建的节点时,一旦知道它并将其添加到树中,您就不需要这样做。但那又怎样呢?您已告知您将返回struct node*。所以你正在返回。您自己评论了此/* return the (unchanged) node指针*/

你问它是来自堆栈还是..?您可以安全地认为我们从最顶层的框架返回,然后调用它的函数实例将获得该值,而不是专注于函数调用的实现。它可能是一个新节点,也可能是一个将被重新分配的旧节点。

关于c - 为什么BST插入末尾需要返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46945761/

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