C ++ Return不起作用

时间:2018-06-08 02:05:23

标签: c++ function avl-tree

将元素添加到AVL树。树目前没有元素。我想添加一个。函数add执行正常,但程序冻结除外,并在return new node(k)时以2秒结束。那是为什么?

struct node 
{
    int key;
    unsigned char height;
    node *left;
    node *right;
    node(int k) {key = k; left = right = 0; height = 1;}
};
node *root;
node *add(node* p, int k)
{
    if(!p)
    {
        return new node(k);

    }
    if(k < p->key)
        p->left = add(p->left,k);
    else
        p->right = add(p->right,k);
    return balance(p);
}


int main()
{
    root = NULL;
    add(root, 10);
    printf("%d",root->key);
    return 0;
}

1 个答案:

答案 0 :(得分:2)

您的函数返回一个值,并且您想要使用它。但你不是把它保存在任何地方。特别是,您似乎期望root包含新节点。所以你必须这样做:

root = add(root, 10);