2017-02-26 125 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