nhs0912   7년 전

이거 왜 런타임 에러가 뜰까요??

혹시 입력을 할 때 아래와 같이 노드의 갯수대로 되어야하는데

1

A . .

-----------------------------------------

1

A B C

노드의 갯수는 1개인데 입력된 것은 3개인 이런 입력 예제가 있어서 그런걸까요??


이것도 다 에러를 잡아줘야하나요??

bupjae   7년 전

다음과 같은 입력 데이터가 들어왔을 때 Tree 배열의 범위를 넘어서는 걸로 보입니다.

nhs0912   7년 전

근데 이거 왜 트리 크기가 넘어가는걸까요?

노드의 갯수가 26개까지인데 

맨 마지막 26번째 노드의 자식이라고 해봤자 배열 인덱스 52번째랑 53번째인데요. 

그럼 크기를 root 인덱스가 1이라고 한다면 크기를 54로 지정하면 이  범위를 벗어나지 않지 않나요???


bupjae   7년 전

실제로 돌려보면

A는 [1] 에 저장되고

B는 [2], C는 [4], D는 [8], E는 [16], F는 [32], G는 [64]

H는 [128]에 저장하려다가 배열 범위를 벗어납니다.

nhs0912   7년 전

어제 생각해봤는데 최악의 경우 트리의 높이가 26인 경우도 있더라고요..그래서 2^26-1개의 노드가 생성되어야하더라고요..

그래서 그 크기만큼 배열 크기를 지정하니깐 이상없이 잘 되네요! 

답변 정말 감사합니다! 덕분에 큰 도움 되었습니다^^ 

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