0
이진 트리와 BFS 순회를 구현했습니다. 이 프로그램은 다음과 같습니다 : 코드가 긴BFS에서 BFS 통과시 seg fault가 발생했습니다.
struct elemq{
int ele;
struct elemq *left;
struct elemq *right;
};
struct que{
struct elemq *ss;
struct que *next;
};
void qinsert(struct elemq *ptr){
struct que *node;
node = (struct que *)malloc(sizeof(struct que));
if(front == NULL && rear == NULL){
node->ss = ptr;
node->next = NULL;
front = node;
rear = node;
}
else{
node->ss = ptr;
node->next = NULL;
rear->next = node;
rear = node;
}
}
struct elemq *qdelete(){
if(front == NULL && rear == NULL){
cout << "No elements to delete\n";
exit(0);
}
struct elemq *dd = front->ss;
struct que *ddd = front;
front = front->next;
free(ddd);
return dd;
}
int isempty(){
if(front == NULL && rear == NULL){
return 1;
}
else{
return 0;
}
}
void bfs(){
qinsert(root);
struct elemq *fff;
while(!isempty()){
fff = qdelete();
cout << fff->ele << "\n";
if(fff->left != NULL){
qinsert(fff->left);
}
if(fff->right != NULL){
qinsert(fff->right);
}
}
}
있지만, 이해하기가 매우 간단합니다. elemq 구조는 트리에있는 노드의 구조입니다. que는 bfs를 구현하기 위해 사용하고있는 큐입니다. q insert는 요소를 큐에 삽입하고 qdelete는 큐의 요소를 삭제합니다. isempty()는 큐가 비어 있는지 여부를 검사합니다. 프로그램은 루트 요소를 표시 한 다음 세그멘테이션 오류를 제공합니다. 도와주세요. 꽤 오랜 시간을두고 고심하고 있습니다.