C++ Return 不工作
C++ Return does not work
正在向 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;
}
你的函数 returns 一个值,你想使用它。但是您不会将其保存在任何地方。特别是,您似乎期望 root
包含新节点。所以你必须做:
root = add(root, 10);
正在向 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;
}
你的函数 returns 一个值,你想使用它。但是您不会将其保存在任何地方。特别是,您似乎期望 root
包含新节点。所以你必须做:
root = add(root, 10);