【发布时间】:2017-01-30 03:13:38
【问题描述】:
我的解决方案是这样的
/*
Node is defined as
typedef struct node
{
int data;
node * left;
node * right;
}node;
*/
node * insert (node * root, int value)
{
bool inTreeAlready = false;
node * cur = root;
while(cur != NULL)
{
if(cur->data < value)
cur = cur->right;
else if(cur->data > value)
cur = cur->left;
else
{
inTreeAlready = true;
break;
}
}
if(!inTreeAlready)
{
cur = new node;
cur->data = value;
cur->left = NULL;
cur->right = NULL;
}
return root;
}
问题提示说明您应该在插入后返回树的根。
这显然是错误的,因为输出是
Wrong Answer! Some possible errors: 1. You returned a NULL value from the function. 2. There is a problem with your logic 3. You are printing some value from the function
这不是很具有描述性。
我已经仔细检查了我的逻辑,但不知道交易是什么。
【问题讨论】:
-
我看到您创建了一个新节点,但我没有看到您实际上将它链接到树。从
root无法访问它 - 它只是泄露了。如果您从一棵空树 (root == NULL) 开始,那么您显然也会以一棵空树结束(root仍然是NULL) - 所以您甚至永远不会进入第一个节点。 -
奇怪的是这段代码打印了一些东西,因为它没有任何
printf调用。