0
我一直在慢慢地编写程序,并试图教我自己的二叉树。这个程序是一个使用树来存储数据的电话簿。我目前卡在我的findOrInsert函数。原来我只是把数据插入一个空旷的地方。现在我想在添加它之前检查数据是否已经存在。如果确实如此,那么只是退出功能提示用户已经有相同的数据。我尝试了一些东西,但没有运气。我可能会尝试从头开始重写它。在此之前,我想看看我能否得到任何帮助。二叉树:找到相同的值
这是我目前有。
struct treeNode * findOrInsert(struct treeNode *p, Entry e) {
if (p == NULL) {
p = createNode(NULL, NULL, e);
}
else if (strcmp(e.fName, p->data.fName) < 0) {
p->left = findOrInsert(p->left, e);
}
else if (strcmp(e.fName, p->data.fName) > 0) {
p->right = findOrInsert(p->right, e);
}
else {
if (strcmp(e.lName, p->data.lName) < 0) {
p->left = findOrInsert(p->left, e);
}
else if (strcmp(e.lName, p->data.lName) > 0) {
p->right = findOrInsert(p->right, e);
}
else {
return p;
}
}
return p;
}
struct treeNode * createNode(struct treeNode *q, struct treeNode *r, Entry e) {
struct treeNode * newNode;
newNode = (struct treeNode*)(malloc(sizeof(struct treeNode)));
newNode->data = e;
newNode->left = q;
newNode->right = r;
return newNode;
}
任何帮助表示赞赏!
老实说我以为我试过。一定是做了一些不同的事情。它现在似乎工作。谢谢! – arthos455