Recursion 二叉搜索树插入实现

Recursion 二叉搜索树插入实现,recursion,null,c++14,binary-search-tree,nodes,Recursion,Null,C++14,Binary Search Tree,Nodes,因此,我的问题如下: 当我运行这个insert helper方法的代码时,我确信我的新节点方法是正确的,因为它用于实例化二元搜索树,没有插入节点。为什么我不能使用这个特定的实现?这里怎么了 我知道如何使用另一个insert实现,其中一个将检查根的左节点和右节点,以及它们是否为null,但无法找出这种更优雅的可能性的问题。这个问题的答案将帮助我创建超出insert函数范围的其他函数 顺便说一句,是的,我有另一个函数调用这个helper函数 谢谢 //INSERT METHODS void Bina

因此,我的问题如下: 当我运行这个insert helper方法的代码时,我确信我的新节点方法是正确的,因为它用于实例化二元搜索树,没有插入节点。为什么我不能使用这个特定的实现?这里怎么了

我知道如何使用另一个insert实现,其中一个将检查根的左节点和右节点,以及它们是否为null,但无法找出这种更优雅的可能性的问题。这个问题的答案将帮助我创建超出insert函数范围的其他函数

顺便说一句,是的,我有另一个函数调用这个helper函数

谢谢

//INSERT METHODS
void BinarySearchTree::insert(int data, struct node* root) {
//If root is null make new node there
if (!root) {
    root = new node(data);

}
else if (root -> data > data) {
    insert(data, root -> left);
}
else {
    insert(data, root -> right);
}

}

变量
root
是一个参数,它仅对该方法调用具有局部可见性。意思是
root=newnode(data)
确实会创建一个新节点,但该节点将仅由参数指向。您的方法不返回任何内容,实际上也不知道该如何处理您的新根对象(它与您可能定义的任何名为相同的类变量不同)

因此,您创建了一个新节点,但不能在该方法调用之外使用它。这会导致一棵空树


作为未来问题的旁注:包括您正在使用的编程语言的标记。很多人将其用作过滤器,因此如果您使用正确的标签,实际上会有更多人查看此标签。

非常感谢您提供的提示,非常感谢