0
我很難讓插入功能正常工作。 cout聲明與我的作業不匹配。如果我嘗試插入5,我得到inserted: 5 right child of: 3
,但應該是inserted: 5 right child of: 22
有人可以幫我嗎?BST插入值
Node* insert(Node *root, int value){
Node *tmp = root;
while(tmp != NULL){
if (tmp->key == value){
return tmp;
}
else if (value > tmp->key){
Node *tm = new Node(NULL, NULL, NULL);
tm->key = value;
tm->left = tmp->right;
tm->right = tmp->left;
tmp->right = tm;
cout << "inserted: " << tm->key << " right child of: " << tmp->key <<endl;
tmp = tmp->right;
}
else if (value < tmp->key){
Node *tm = new Node(NULL, NULL, NULL);
tm->key = value;
tm->left = NULL;
tm->right = NULL;
tmp->left = tm;
cout << "inserted: " << tm->key << " left child of: " << tmp->key <<endl;
tmp = tmp->left;
}
}
return tmp;
}
您的代碼插入新值作爲根節點的子節點。你應該首先找到新價值的地方。 –
您應該遞歸,直到找到正確的位置。 – molbdnilo