트리의 가장흔한 구현인 parent, leftChild, rightChild 포인터를 이용해서 구현하겠다는 표현을
"연결리스트로 표현하고 싶다" 라고 하신건가요?
아니면 완전이진트리를 배열로 구현하는 발상을 이용해서 링크드리스트로 구현하시겠다는 이야기인가요?
전자라면, 이때는 '링크드 리스트'라고 표현하면 오해의 소지가 있습니다.
이때는 '링크드 스트럭쳐'라고 표현하는 것을 추천 합니다.
링크드리스트는 벡터, 링크드리스트, 스택, 큐 처럼 하나의 특정 자료구조를 나타내고 있는 이름이기 때문입니다.
후자라면, 그렇게 구현하는 것은 트리가 아니고 그저 링크드리스트라고 밖에 할 수 없습니다.
배열로 구현했을 때와는 달리 전혀 이점이 없는데요.
트리는 링크드리스트 처럼 전후 노드간의 연결이 아니고 상하 노드간의 연결입니다.
배열로 구현했을 때는 수식을 이용해 상하노드의 배열 인덱스값을 한번에 계산 할 수 있어서 해당 노드로 바로 접근이 가능하지만, 링크드리스트로 구현하면 리스트를 따라 계속 이동해야하므로 매우 비 효율적인 구조가 됩니다.
그래서 이렇게 구현하는 경우가 없으므로, 실제 자료도 구하기가 어려운 듯 한데요.
왜 이렇게 구현을 하시려고 하시나요?
트리의 가장흔한
트리의 가장흔한 구현인 parent, leftChild, rightChild 포인터를 이용해서 구현하겠다는 표현을
"연결리스트로 표현하고 싶다" 라고 하신건가요?
아니면 완전이진트리를 배열로 구현하는 발상을 이용해서 링크드리스트로 구현하시겠다는 이야기인가요?
전자라면, 이때는 '링크드 리스트'라고 표현하면 오해의 소지가 있습니다.
이때는 '링크드 스트럭쳐'라고 표현하는 것을 추천 합니다.
링크드리스트는 벡터, 링크드리스트, 스택, 큐 처럼 하나의 특정 자료구조를 나타내고 있는 이름이기 때문입니다.
후자라면, 그렇게 구현하는 것은 트리가 아니고 그저 링크드리스트라고 밖에 할 수 없습니다.
배열로 구현했을 때와는 달리 전혀 이점이 없는데요.
트리는 링크드리스트 처럼 전후 노드간의 연결이 아니고 상하 노드간의 연결입니다.
배열로 구현했을 때는 수식을 이용해 상하노드의 배열 인덱스값을 한번에 계산 할 수 있어서 해당 노드로 바로 접근이 가능하지만, 링크드리스트로 구현하면 리스트를 따라 계속 이동해야하므로 매우 비 효율적인 구조가 됩니다.
그래서 이렇게 구현하는 경우가 없으므로, 실제 자료도 구하기가 어려운 듯 한데요.
왜 이렇게 구현을 하시려고 하시나요?
댓글 달기