주승민
가입: 2023년 3월 16일 올린 글: 8
|
올려짐: 2023년3월23일 0:37 주제: [HW2] 4번 문제 질문드립니다 |
|
|
안녕하세요, hw2 4번 문제의 goLeft 함수를 이해하다가 궁금증이 생겼습니다.
예시로 나온 goLeft 함수를 보면, left sibling들 중에서 가장 왼쪽에 있는 곳으로 위치를 옮기는 것으로 보입니다(l::left의 l로 위치를 옮김). 그러나 이 과정을 따라가면 지퍼의 위치를 옮긴 후 left sibling과 right sibling이 실제와 다르게 나오는 것 같습니다. 가령 a,b,c,d가 sibling 관계라고 했을 때 c를 기준으로 left는 [a;b], right는 [d]입니다. c에서 goLeft한다면 지퍼는 a로 위치를 옮길 것이고, 함수에 따르면 left는 [b], right는 [c;d]가 되는 것으로 보입니다. 하지만 a로 자리를 옮겼을 때 left는 [], right는 [b;c;d]가 되어야 트리의 구조를 반영했다고 볼 수 있을 것 같습니다. 만약 함수의 결과(left가 [b], right가 [c, d])를 만족시키는 b,a,c,d의 배열이라고 생각하더라도, 그러면 지퍼의 위치를 옮기는 것이 트리의 구조를 바꿔버리는 것이 되기 때문에 말이 안 되는 것 같습니다.
혹시 제가 이해한 것이 틀렸다면 지적 부탁드립니다. 만약 맞다면, goRight 함수도 이와 유사한 이슈가 생길 것 같은데, 이런 이슈를 무시하고 문제를 풀어도 되는지 궁금합니다.
감사합니다. |
|