2015-04-07 114 views
0

我试图创建一个二进制树,我在用下面的代码,并得到错误的麻烦:二叉树 - 插入到非空树

expression must have pointer-to-class type. 

我越来越有错误“树” 插入件( - >左,值)内,并插入( - >右,值);

void insert(node **tree, int value){ 
if (*tree == nullptr){ 
    *tree = new node; 
    (*tree)->data = value; 
    (*tree)->left = nullptr; 
    (*tree)->right = nullptr; 
} 

else 
    if (value < (*tree)->data) 
     insert(tree->left, value); 

    else if (value >(*tree)->data) 
     insert(tree->right, value); 

else 
    return; 

}

+1

或者,传递树作为引用指针并为自己节省大量'*'字符。 – zennehoy

+0

谢谢,解决了这个问题,但现在我得到了另一个错误“智能感知:参数类型”节点*“与参数类型”节点**“不兼容 – FastEddie

+0

发布整个二进制树代码是否有帮助? – FastEddie

回答

1

假设node::leftnode::rightnode*类型的,你需要调用插入如下:

insert(&(*tree)->left, value); 

另外,通过树作为一个指针引用,并保存自己一堆明确的解除引用:

void insert(node *&tree, int value){ 
    if (tree == nullptr){ 
     tree = new node; 
     tree->data = value; 
     tree->left = nullptr; 
     tree->right = nullptr; 
    } 
    else if (value < tree->data) 
     insert(tree->left, value); 
    else if (value > tree->data) 
     insert(tree->right, value); 
    else 
     return; 
} 
+0

谢谢zennehoy,这没有把戏,我去了第一个选项。 – FastEddie