2015-04-07 150 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