带参数引用的二叉搜索树插入

时间:2018-04-02 22:07:18

标签: c++ binary-search-tree

我编写了以下函数来练习二叉搜索树插入:

...WHERE (@LocationId = 1 AND 1=1)
   OR (@LocationId <> 1 AND LocationId = @LocationId)

它有效,但我不明白为什么要传递对root的引用。有人知道为什么吗?

1 个答案:

答案 0 :(得分:0)

您希望该函数能够更改存储在您要插入的节点的父节点中的指针,以使其指向新节点而不是nullptr。如果不使用pass-by-reference,则所有函数都可以修改指针的本地副本,并且实际树中的指针不会被更改。

例如,假设您正在查看节点,并且希望将新节点作为此节点的正确子节点插入。

someNode[key: 123, left: nullptr, right: nullptr]

将使用right指针作为参数调用该函数。您希望该函数能够更改节点,使其如下所示:

someNode[key: 123, left: nullptr, right: newNode]

如果没有按引用传递,则该函数不能更改节点的right指针,因为它只被赋予了副本。使用该引用允许该函数实际修改存储在用作参数的节点中的指针。