jinwhan   2년 전

처음에 인접행렬로 풀고 어? 쉽네 했다가 메모리초과...

다음엔 단순 연결 리스트로 풀었다가 시간초과...

결국 우선순위 큐로 풀고 있는데 생전 처음보는 에러가 나는데 어디서나는지 찾지 못해 질문드립니다.

free를 사용하는 함수가 pop, choose, shortest_path인데

choose와 shortest_path는 pop함수내에서 새로 할당한 노드를 free하고있고,

pop함수는 힙에 노드가 없으면 호출 자체를 하지 않도록 구현했고 pop에서 free하는건 힙에 노드가 하나만 있을때 해당노드를 free하는것과

pop_pos에서 리턴받은 노드를 free하는건데

pop_pos에서 while문이 끝나는 경우는 트리의 높이가 1이하인 경우로 가능한 트리는 노드의 수가 1,2,3인 완전이진트리입니다.

1,3 일때 is_full이 true이고 3인경우 rightchild를 리턴, 1은 자기자신을 리턴. 2인경우 leftchild를 리턴하기때문에 free할 노드가 NULL이 아니라 생각합니다

근데 DoubleFree라는 생전 처음보는 에러가 나와서 머리가 정지하네요...

제발 살려주세요...

이 문제 티어가 왜 골드5일까요...

결국 저는 실버인가봅니다...ㅠㅠㅠ

jinwhan   2년 전

pop_pos에서 트리 탐색하는중에 153번째줄 에서 rightchild를 leftchild로 잘못적었네요

근데 그걸 고쳐도 시간초과가 나는데 뭘 어떻게 해야할까요?

댓글을 작성하려면 로그인해야 합니다.