【发布时间】:2015-03-27 23:11:00
【问题描述】:
所以我有一个可以完美工作的二叉搜索树,除了我不想插入重复项。我已经尝试过几种方法来做到这一点,但似乎无法弄清楚。
我要做的是在插入任何要检查的内容之前先调用我的搜索方法,如果不存在则让 insert 方法插入课程。
有人知道解决这个问题的好方法吗?我的逻辑对吗?
这是我的插入方法:
bool BinarySearchTree::treeInsert(string courseNumber, string courseTitle)
{
Course * z = new Course(courseNumber, courseTitle);
Course *x, *y;
y = NULL;
x = root;
while (x != NULL){
y = x;
if(z->getCourseNumber() < y->getCourseNumber()){
x = x->getLeft();
} else{
x = x->getRight();
}
}
z->setParent(y);
if (y == NULL){
root = z;
} else if (z->getCourseNumber() < y->getCourseNumber()){
y->setLeft(z);
}
else {
y->setRight(z);
}
}
提前致谢
【问题讨论】:
-
一个问题是,在您知道自己将需要它之前,您就分配了一个新的
Course。如果找到重复项,则说明存在内存泄漏。 -
免费线索:“if(z->getCourseNumber() == y->getCourseNumber())”会发生什么?
标签: c++ insert binary-search-tree