我的解決辦法是像我的二叉樹插入邏輯的缺陷在哪裏?
/*
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'調用。 – immibis