2017-02-26 127 views
3
Node* binTree::insert(vector<Node> vec, int index) { 

    Node* new_node = &vec[index]; 
    Node* left_leaf=NULL; 
    Node* right_leaf=NULL; 
    if (new_node->left == -1 || new_node->right == -1) 
     return new_node; 
    if (c == 'n') 
     { 
      root = new_node; 
      c = 'y'; 
     } 
    index = new_node->left; 
    new_node->left_leaf = insert(vec, new_node->left); 
    index = new_node->right; 
    new_node->right_leaf = insert(vec, new_node->right); 
    return NULL; 
}; 

我的問題是,在執行遞歸過程後,當它命中「返回新節點」時,返回值變成垃圾。我不知道爲什麼,有什麼提示或修復?返回指針變成垃圾... C++

+0

因爲你返回一個指向*局部變量*的指針。嘗試通過引用來傳遞向量。 –

回答

1

new_node正在引用局部變量中的元素(作爲副本參數傳遞vector)。嘗試將它作爲參考傳遞。

+0

您的意思是此矢量:「new_node-> left_leaf = insert(vec,new_node-> left);」?我應該通過&vec來代替嗎? – john

+0

'Node * binTree :: insert(vector &vec,int index)' – cbuchart

+0

順便說一句,'i'是'index',是不是? – cbuchart