저는 천천히 프로그램을 작성하고 스스로 이진 트리를 가르치려고했습니다. 이 프로그램은 트리를 사용하여 데이터를 저장하는 전화 번호부입니다. 현재 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