【问题标题】:Binary Search Tree Insert Implementation二叉搜索树插入实现
【发布时间】:2017-12-16 05:19:48
【问题描述】:

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

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

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

谢谢!!!!!!

//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);
}

}

【问题讨论】:

    标签: recursion null c++14 binary-search-tree nodes


    【解决方案1】:

    变量root 是一个参数,它只对该一个方法调用具有本地可见性。意思是root = new node(data) 确实会创建一个新节点,但这只会由参数指向。您的方法不返回任何内容,并且它实际上不知道它应该如何处理您的新根对象(它与您可能定义的任何名称相同的类变量不同)。

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

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

    【讨论】:

    • 非常感谢您的提示,非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多