考虑到算法,我的代码似乎应该可以工作,但我是 C++ 新手,当我多次调用 insert 时,这些指针似乎会覆盖自己。例如,如果我用值 1、3、5 调用 insert,那么根将为 1(如预期的那样),但 3 将被覆盖,并且根的右子节点将具有值 5 而不是 3。
virtual bool insert(const Data& item) {
if(root == NULL){
BSTNode<Data> newNode (item);
root = &newNode;
isize++;
return true;
}
BSTNode<Data>* nextNode = root;
BSTNode<Data>* prevNode = NULL;
bool isLeft;
while(nextNode!=NULL) {
if (item < nextNode->data) {
prevNode = nextNode;
nextNode = nextNode->left;
//std::cout << prevNode->data;
isLeft = true;
}
else {
prevNode = nextNode;
nextNode = nextNode->right;
//std::cout << prevNode->data;
isLeft = false;
}
}
BSTNode<Data> createNode (item);
createNode.parent = prevNode;
if (isLeft) prevNode->left = &createNode;
else prevNode->right = &createNode;
isize++;
return true;
}