簡體   English   中英

具有參數引用的二進制搜索樹插入

[英]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);
    }
}

它有效,但是我不明白為什么要傳遞對root的引用。 有人知道為什么嗎?

您希望函數能夠更改存儲在要插入的節點的父節點中的指針,使其指向新節點而不是nullptr 如果不使用按引用傳遞,則所有功能可以做的就是修改指針的本地副本,並且實際樹中的指針不會更改。

例如,假設您正在查看一個節點,並且希望將新節點插入為該節點的正確子節點。

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

該函數將使用right指針作為參數來調用。 您希望函數能夠更改節點,因此它看起來像這樣:

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

如果不傳遞引用,則該函數將無法更改節點的right指針,因為它僅獲得了一個副本。 使用引用允許函數實際修改存儲在用作參數的節點中的指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM