二进制搜索树插入带参数参考
binary search tree insertion with argument reference
我写了以下功能来练习二进制搜索树插入:
void RecursiveInsert(struct Node* &root, int key) {
if (root == nullptr) {
root = new Node(key);
return;
} else if (root->key > key) {
RecursiveInsert(root->left, key);
} else {
RecursiveInsert(root->right, key);
}
}
它有效,但我不明白为什么要通过引用根。有人知道为什么吗?
您希望该功能能够更改您要插入的节点的父节点中存储的指针,以便指向新节点而不是nullptr
。如果您不使用通过传递,那么所有功能都可以做的就是修改指针的本地副本,而实际树中的指针将不会更改。
例如,假设您正在查看一个节点,并且您想将新节点插入该节点的合适孩子。
someNode[key: 123, left: nullptr, right: nullptr]
该函数将以right
指针作为参数来调用。您希望该功能能够更改节点,因此看起来像这样:
someNode[key: 123, left: nullptr, right: newNode]
如果您不通过引用传递,则该函数将无法更改节点的right
指针,因为它仅给出了副本。使用引用允许该函数实际修改存储在被用作参数的节点中的指针。
相关文章:
- Lambda闭包左值可以作为右值参考参数传递
- 遍历地图并将该对用作参考参数 C++11
- 什么是常量参考参数以及如何使用它?
- 函数参数绑定通过参考与传递指针传递数组的规则
- 参考类中的模板参数包
- 是否可以通过引用通过参数返回参考
- RVALUE参考与const lVALUE参考作为参数之间的混淆
- 可以将模板字段参考模板参数作为第一个模板参数传递
- 二进制搜索树插入带参数参考
- 将参考类型作为嵌套模板结构中的模板参数作为模板参数不起作用
- 如何将rvalue作为参考参数传递给函数
- 强制扣除模板参数要参考
- 移动 l 值参考参数是否是一种不好的做法?
- C 11:为什么RVALUE参考参数隐式转换为LVALUE
- 转发模板参数的const-度,我应该使用转发参考
- 参考变量参数与本地参考变量
- 无法将类对象转换为函数默认参数中的参考
- 为什么可以将其他类型变量用作C 中常量参考参数参数的参数
- 如何处理可能指向内部数据的参考参数
- 用于未使用参数参考的单线解决方案