Я медленно писал программу и пытался научить себя бинарным деревьям. Эта программа представляет собой телефонную книгу, которая использует дерево для хранения своих данных. В настоящее время я застрял в функции 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